Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
自动装箱与拆箱
java在背后做的事情如下:
一个坑 Integer在-128-127时可以使用== 比较
即Integer默认的缓存区间为-128 127 如果我们使用这区间的值时会直接指向定义好的地址,但是如果超过这个区间jvm就会创建新对象
如下面就会开两个新对象 所以地址空间不同 结果为false
Integer i1=500;
Integer i2=500;
System.out.println(i1==i2);
但是如果是在区间 那么都会指向常量池对应的地址空间,结果为true
在一个静态方法内调用一个非静态成员为什么是非法的?
String,StringBuffer和StringBuilder 的区别是什么? String 为什么是不可变的?
String(不可变):
StringBuffer(线程安全)
简单来说就是StringBuffer的源码定义的操作方法都加上了synchronized
同步锁 使得保证了线程安全
StringBuilder(线程不安全)
几乎和StringBuffer提供的API一致 但是并没有保证线程安全,用于多线程操作提高性能