@Test
public void testfdk2(){
String a1=new String ("aaa1");//同时会生成堆中的对象 以及常量池中1的对象,但是此时a1是指向堆中的对象的
String x=a1.intern();//"aaa1" 常量池中的已经存在,之后返回引用,不会将a1当做"aaa1"的引用,a1指向的一样是String对象
String a2="aaa1";
System.out.println(a2==a1); //false 此时a1指向的是对象的地址
System.out.println(x==a2);//true x 是"aaa1"的引用
}
@Test
public void testfdk3(){
String string=new String("he")+new String("llo");// 常量池中+ 堆中 + s3指向的堆中的对象(注此时常量池不会生成"hello")
String x=string.intern(); // 在常量池中找,没有“hello”这个常量对象,所以生成常量引用,和堆中那个对象的地址相同
String str2="hello";
System.out.println(string==str2);//false
System.out.println(x==str2);//true
}
关于String的intern方法
最新推荐文章于 2023-12-15 14:58:53 发布