"a"+new String("a") 和 String name = "aa"; 有什么区别
String name = "aa";
String name1 = "a"+new String("a");
System.out.println(name == name1);
String name = "aa"; //直接赋值在String的常量池中
String name1 = "a"+new String("a"); //在堆内存中
System.out.println(name == name1);// ==比较地址,所以地址不同返回false
String name = “a”;这句话执行过程是:
到常量池中寻找“a”,
1.如果存在,则直接将“a”对象的地址传递给a;
2.如果不存在,则在常量池中创建“a”,然后将地址传递给a.
String name1 = "a" + new String(“a”);执行过程是:
首先在堆内存中创建对象“a”,
然后在常量池中寻找“a”,
1.如果存在,啥事不做;
2.如果不存在,在常量池中创建“a”对象;
如果对你有帮助,记得采纳一下哦~谢谢O(∩_∩)O
== 比较的是栈中name的地址值 和 name1的地址值,在栈中 只要变量名不一样 == 就是false