如果是String x = "abc";编译器首先会在常量池中寻找有没有"abc"这个字符串,如果有则直接从常量池中取,不会new,如果常量池中没有,则会new一个,并将"abc"存放到常量池中。
而String x= new String( "abc");则编译器直接new一个字符串,不会到常量池中查询。
所以:
String x1= "abc";
String x2= "abc";//x1是"abc",常量池中已经有了"abc",所以x2直接从常量池中取
String x3 = new String("abc");
String x4 = new String("abc");
System.out.println(x1 == x2);//true
System.out.println(x2 == x3);//false
System.out.println(x3 == x4);//false
String x = "abc" 和 String x = new String("abc")有什么区别?
最新推荐文章于 2023-03-03 01:36:15 发布