1.String
使用包含变量的字符串连接符如"aa" + s1创建的对象是运行期才创建的,存储在堆中;
以下代码解释以上所说的内容:
String s1 = new String("11");
String s2 = new String("11");
System.out.println(s1== s2);//false 在对堆内存中,分配的地址不一样,注意 "==" 比较的是地址
String s3 = "22";
String s4 = "22";
System.out.println(s3== s4);//true 在常量池中创建过s3了,所以在s4出来的时候并不会在创建对象了;
System.out.println(s3== s2);//false 一个在堆中,一个在常量池中,显然不一样.
String s5 = "2" + "2";//这句话其实在编译器编译后的class文件中 已经变成 "22"
//s5创建了几个对象?//回答:最多一个,如果常量池里面没有就是创建一个,如果常量池里本来就有就是创建零个!
String特点:
不可变的, 一个String对象的内容不能变,一旦内容变量该对象就变成一个新的String对象了
注:以上内容是个人对String理解的部分,如果有误欢迎及时指出,希望大家共同进步.