在讨论他们的区别时,我们要知道java中的内存,主要分为堆和栈。栈中一般存放的是java中的基本数据变量 比如 int,double,float 还存放了对象的引用变量 如 Person person =new Person() 中的 (Person person )。
而堆内存则存放了 new Person。
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 = "abc";
String s2 = "abc";
System.out.println(s1==s2); //true
说明s1和s2是不指向同一个对象的
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_43842093/article/details/122811683
内容来源于网络,如有侵权,请联系作者删除!