java的虚拟机在内存中开辟出一块单独的区域,用来存储字符串对象,这款内存区域被称为字符串缓冲池。

//创建字符串的时候先查找字符串缓冲池中没相同的对象,如果相同的对象就直接返回改对象的引用

//如果没相同的对象就在字符串中创建该对象,然后将该对象的引用返回

String a = "123";

String b = "123";

//== 比较的是内存地址是否相等

if(a == b){

System.out.println("输出相等");

}else{

System.out.println("不相等");

}

//创建了两个对象

//一个是567 缓冲池中创建的对象

//一个是new的对象 内存中创建的对象,但是c指向的地址在内存中

String d = "567";

String c = new String("567");

if(d == c){

System.out.println("d和c相等");

}else{

System.out.println("输出d和c不相等");

}

if(d.equals(c)){

System.out.println("输出equalsd和c相等");

}else{

System.out.println("equalsd和c不相等");

}

//返回字符串在缓冲池的对象的引用

c = c.intern();

if(d == c){

System.out.println("输出d和c相等");

}else{

System.out.println("d和c不相等");

}

String a1 = "dogapple";

String a2 = "dog";

String a3 = "apple";

String a4 = a2 + a3;

System.out.println(a1 == a4);

System.out.println(a1.equals(a2+a3));

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐