package Test;
public class Stringtest {
public static void main(String[] args) {
String n1 = "cnb";//可能会创建对象 可能不会创建对象 查看在string池中是否存在,会在string池中
//创建一个string对象 ,然后n1指向这个内存,无论创建多少个同样的字符串,始终只有一个内存地址被分配
//所有字符串都在编译后自动驻留
String n2 = new String("cnb");//可能会创建一个对象,也可能是两个
//如果string池中没有这个字符串,则java池中创建这个string对象
//new 关键字 会在堆中创建一个n2的string对象,value 为cnb
String n3 = "cnb"+"";
String n4 = "cnb";
System.out.println((n1==n2)+" "+(n3==n4));
System.out.println("================================");
String str3 = "ABC";
String str4 = "ABC";
String str5 = "AB" + "C";
System.out.println( str3 == str4);
System.out.println( str3 == str5);
System.out.println("================================");
String a = "ABC";
String b = "AB";
String c = b + "C";
//a b 在编译时就被确定了 c是引用变量,不会在编译的时候确定
System.out.println(a==c);//false
}
}
false true
================================
true
true
================================
false
String直接赋值和new对象的区别
最新推荐文章于 2021-09-14 17:34:55 发布