欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 知识点

程序员文章站 2022-04-24 11:12:21
...
  • final 修饰符
final 类   不能被继承
final 方法  不能被重写
final 变量  不能修改引用
  • Unicode实现方式:包含了UTF-8、UTF-16、UTF-32
UTF-8:可以用1 / 2 / 3 字节来表示
UTF-16:可以用 2 / 4 字节来表示
UTF-32:可以用 4 字节来表示
  • 栈溢出
一种是*,递归没终止条件
一种是outofmemory,方法中线程启动过多
  • codePoint 和 char
一个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