String s = "abc" 与 String s = new String("abc") 有什么区别?

2024-11-21 01:48:34
推荐回答(3个)
回答1:

String s = "abc" :s是存储在栈里。
先在栈中创建一个对String类的对象引用变量s,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令s指向”abc”,如果已经有”abc” 则直接令s指向“abc”。例子如下:
String s1 = "abc";
String s2 = "abc";
System.out.println(s1==s2); //true
说明s1和s2指向同一个对象

String s = new String("abc") : s是存储在堆里。
每调用一次就会创建一个新的对象。 例子如下:
String s1 =new String ("abc");
String s2 =new String ("abc");
System.out.println(s1==s2); // false
说明s1和s2是不指向同一个对象的

回答2:

string s="abc" 中的s是实体,其值就是"abc",而string s=new string("abc")中的s是string类的一个对象,我想可以这么说吧,s就是指向“abc”的指针,其值就是"abc"的值

回答3:

String s = "abc"是在对象池中拿对象;
String s = new String("abc") 是创建新对象;