Java 知识点

2018-09-06  本文已影响9人  07120665a058
final 类   不能被继承
final 方法  不能被重写
final 变量  不能修改引用
UTF-8:可以用1 / 2 / 3 字节来表示
UTF-16:可以用 2 / 4 字节来表示
UTF-32:可以用 4 字节来表示
一种是stackoverflow,递归没终止条件
一种是outofmemory,方法中线程启动过多
一个char 不能完全代表一个code point,一个code point 可能会超过两个字节,一个char 表示不了,所以 code point 用 int 存储
因为String不可变,每次拼接都会产生新的字符串,效率低,可以使用String.format()或者 new StringBuilder()
new StringBuffer() 是线程安全的,所以平常使用new StringBuilder()
Init block 和 filed  都和声明顺序有关,但是都在constructor之前执行
Instance variables: are always initialized
Static variables: are always initialized
Local variables: must be initialized before use

局部变量声明后,Java虚拟机不会自动给它初始化为默认值,必须经过显示的初始化,才能使用。如果使用一个没有被初始化的局部变量,编译器会报错。
类的成员变量,Java虚拟机都会先自动给它初始化为默认值。
Java虚拟机会为数组的所有元素初始化为相应类型的默认值。引用类型被初始化为 null ,基本类型初始化为相应的值
子类实例化时,会先调用父类的无参构造函数,再调用自己的构造函数
每个构造方法里面只能有一个(this / super)
如果构造方法里显示指定了(this / super),则会继续调用一次
可以用 this(args) / super(args) 显示指定调用有参构造还是无参构造
如果子类 / 父类 没有显示定义构造函数,会默认有一个无参构造函数
递归调用,编译错误
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
package-private Y Y N N
private Y N N N
上一篇下一篇

猜你喜欢

热点阅读