2020-06-22:mark
1. int和Integer类型之间的缓存关系
int的包装类型可能稍微了解一些的同学都知道Integer有一个缓存机制,Integer类在加载时会创建一个-128~127的数组,在使用到这之间的数字时会直接从数组里边取,但是这里有一个误区:
使用Integer a = 1;或Integer a = Integer.valueOf(1); 在值介于-128至127直接时,才作为基本类型。
使用Integer a = new Integer(1); 时,无论值是多少,都作为对象。
提问:Integer的valueOf方法有什么作用?是如何实现的?
2. 数组中的常用方法作用
List方法- add(parameter)方法:在数组的末尾添加一个元素
- add(parameter, parameter)方法:在第一个参数的下标处添加第二个参数的值,之后的依次往后排
- remove(parameter)方法:移除参数位置下标的值
提问:如果让你用代码实现list的add和remove方法,你会吗?
3. 每个类都能使用的方法(Object方法)
ObjectObject 类中方法及说明如下:
registerNatives() //私有方法
getClass() //返回此 Object 的运行类。
hashCode() //用于获取对象的哈希值。
equals(Object obj) //用于确认两个对象是否“相同”。
clone() //创建并返回此对象的一个副本。
toString() //返回该对象的字符串表示。
notify() //唤醒在此对象监视器上等待的单个线程。
notifyAll() //唤醒在此对象监视器上等待的所有线程。
wait(long timeout) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或 者超过指定的时间量前,导致当前线程等待。
wait(long timeout, int nanos) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
wait() //用于让当前线程失去操作权限,当前线程进入等待序列
finalize() //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
4.静态化块
静态化块JAVA的初始化顺序:
父类的静态成员初始化>父类的静态代码块>子类的静态成员初始化>子类的静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法
注意:
1.静态成员和静态代码块只有在类加载的时候执行一次,再次创建实例时,不再执行,因为只在方法区存在一份,属于一整个类。
2.上述的是通用的加载顺序,如果没有则省略。