Java基础整理

87 阅读1分钟

1. 关于Integer类型的缓存池

基本类型在自动装箱的过程中,会调用valueOf()方法,因此在-128到127之间的值,会直接采用缓存池中的对象

2. 关于String

Java8中,String底层采用final char数组表示;Java9中,底层采用final byte数组存储字符,同时使用coder来标记编码格式。调用intern方法可以将字符串放入到String pool中。

String类型采用final数组的好处

  1. 线程安全,String的不可变性,让String类型天生具有线程安全的特点
  2. String Pool的需要,可以将String放入到字符串常量池(String pool)中
  3. 便于缓存hash值,因为String是不可变的,所有其hash值也不会变化,因此只会计算一次hash值

3. String、StringBuilder、StringBuffer之间的区别

  1. 不变性:String是具有不变性,StringBuilder和StringBuffer都是可变的
  2. 线程安全性:String、StringBuffer是线程安全的、StringBuilder是线程不安全的。tring的底层是final数组,因此其天生具有线程安全性,StringBuffer采用的是同步方法,保持其线程安全性。

4. 什么是反射机制?

反射就是在程序运行时,根据Class类对象动态获取对象的信息。反射提供了一定的灵活性,但是带来了安全性和性能上的开销。