认证培训,h3c认证体系,网络工程师
丰沃创新

JAVA基础易混知识点对比【网络工程师培训】

  • 发布时间: 2019-6-3 9:30:45

1、Primitive vs Reference variable

primitive变量有默认值

primitive变量存储值,reference变量存储对象在heap中的handle

primitive变量赋值是值的拷贝(互不影响),reference变量赋值是handle的拷贝(操作会影响另一方)

primitive变量使用==比较,reference变量使用equals()比较

primitive变量作为参数传递的是值,reference变量作为参数传递的是handle的拷贝

primitive变量参数的值在方法内被修改不影响原有值,reference变量参数修改handle不影响原有值但使用handle可以修改内部的值

primitive变量作为方法的返回值时返回的是值,返回reference变量时返回的是handle可以继续在方法外使用

primitive变量存储在stack,reference变量存储在heap

2、Static vs Non Static class

类分为顶级类和嵌套内部类(还有特殊的匿名类)

顶级类不能被定义为static,嵌套内部类可以选择是否为static

嵌套内部类如果是static的话一般叫嵌套类,非static的叫内部类

嵌套类和内部类的创建方法不同:

Outer.Nested nested = new Outer.Nested();

Outer.Inner inner = new Outer().new Inner();

嵌套类可以被看做外部类的一个静态成员,可以在static方法中被使用

嵌套类不可以访问外部类的非static成员,内部类可以

3、Interface vs Abstract Class

抽象类只能extend一个,接口可以implement多个

抽象类中可以定义非抽象方法,接口中不能定义非抽象方法(JDK8默认方法除外)

抽象类中即使没有抽象方法也可以标记为abstract

抽象类可以添加方法不影响子类,接口中添加方法需要修改所以它的实现类

抽象类适合代码重用,接口适合类型同一

接口没有方法实现更易于解耦

接口可以实现依赖注入

接口里的变量默认是public final

接口不可实例化,抽象类不可实例化但可以invoked

4、Error vs Exception

常见Error:OutOfMemoryError

Error不需要try-catch即使catch了也无法解决,Exception异常catch后可做后续处理

RuntimeException表示的是程序代码的错误,Erro多为系统环境上致命错误

5、ArrayList vs LinkedList

ArrayList后台通过数组实现,LinkedList通过链表实现(嵌套类存储前后节点)

LinkedList不只是实现了List还实现了Deque(FIFO)。add(),poll()

添加元素:ArrayList-O(1) LinkedList-O(1)

删除元素:ArrayList-O(n) LinkedList-O(n/2)

获取元素:ArrayList-O(1) LinkedList-O(n/2)