Integer缓冲区
- java预先创建了256个常用的整数包装类型对象,-128~127
- 在实际应用中,对已经创建的对象进行复用
public class Demo {
public static void main(String[] args) {
Integer integer1 = new Integer(100);//将基本类型转换为引用类型
Integer integer2 = new Integer(100);
System.out.println(integer1==integer2);//俩对象为引用类型,比的是栈内存里的地址,所以输出false
Integer integer3 = 100;//自动装箱,将基本类型转为引用类型
Integer integer4 = 100;
System.out.println(integer3==integer4);//输出true
/* velueof方法中存有-128~127之间的数,
如果需要用到方法里的数,直接将该数所对应的地址从堆空间 传到栈空间,
所以两个对象对应的地址一样 */
Integer integer5 = 200;//自动装箱
Integer integer6 = 200;
System.out.println(integer5==integer6);//输出false,
// 200不在范围内,所以在堆空间里新开一个空间,对应的地址不相同
}
}
String类
- 字符串是常量,创建之后不能改变
- 字符串字面值存储在字符串池中,可以共享
- String s = "Hello";
- String s = new String("Hello");产生两个对象,堆,池各存储一个
public class Demo {
public static void main(String[] args) {
String name = "张三";//存储在常量池中
name = "李四";//新开辟了个空间,name的地址值改变
String name2 = "李四";//在常量池中找到“李四”,得到他的地址值
String str = new String("Hello");//在堆空间和常量池中都开辟空间
}
}
javaSE21/9/13