String s1=new String(“abc“); 和String s1=“abc“区别
生活随笔
收集整理的這篇文章主要介紹了
String s1=new String(“abc“); 和String s1=“abc“区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在討論他們的區(qū)別時,我們要知道java中的內(nèi)存,主要分為堆和棧。棧中一般存放的是java中的基本數(shù)據(jù)變量 比如 int,double,float 還存放了對象的引用變量 如 Person person =new Person() 中的 (Person person )。
而堆內(nèi)存則存放了 new Person。
String s = “abc” :s是存儲在棧里。
先在棧中創(chuàng)建一個對String類的對象引用變量s,然后查找棧中有沒有存放"abc",如果沒有,則將"abc"存放進(jìn)棧,并令s指向”abc”,如果已經(jīng)有”abc” 則直接令s指向“abc”。例子如下:
說明s1和s2指向同一個對象
String s = new String(“abc”) : s是存儲在堆里。
每調(diào)用一次就會創(chuàng)建一個新的對象。 例子如下:
String s1 = "abc"; String s2 = "abc"; System.out.println(s1==s2); //true說明s1和s2是不指向同一個對象的
總結(jié)
以上是生活随笔為你收集整理的String s1=new String(“abc“); 和String s1=“abc“区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5和前端精要(1)-架构与基础(
- 下一篇: mxnet基础到提高(53)-批量标准化