91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網站建設資訊

NEWS

網站建設資訊

詳細講解equals與==的區別

首先我們來介紹一下JVM中的內存分配知識:

廈門網站建設公司創新互聯,廈門網站設計制作,有大型網站制作公司豐富經驗。已為廈門數千家提供企業網站建設服務。企業網站搭建\成都外貿網站制作要多少錢,請找那個售后服務好的廈門做網站的公司定做!

(推薦教程:java課程)

在JVM中,內存分為堆內存跟棧內存。他們二者的區別是: 當我們創建一個對象(new Object)時,就會調用對象的構造函數來開辟空間,將對象數據存儲到堆內存中,與此同時在棧內存中生成對應的引用,當我們在后續代碼中調用的時候用的都是棧內存中的引用。還需注意的一點,基本數據類型是存儲在棧內存中。

初步認識equals與==的區別:

==是判斷兩個變量或實例是不是指向同一個內存空間,equals是判斷兩個變量或實例所指向的內存空間的值是不是相同。==是指對內存地址進行比較,equals()是對字符串的內容進行比較。==指引用是否相同, equals()指的是值是否相同。

用一張圖可以簡要的表現他們之間的關系:

測試:

equals與==的區別詳解:

== 比較的是變量(棧)內存中存放的對象的(堆)內存地址,用來判斷兩個對象的地址是否相同,即是否是指相同一個對象。比較的是真正意義上的指針操作。equals用來比較的是兩個對象的內容是否相等,由于所有的類都是繼承自java.lang.Object類的,所以適用于所有對象,如果沒有對該方法進行覆蓋的話,調用的仍然是Object類中的方法,而Object中的equals方法返回的卻是==的判斷。

String s="abcd"是一種非常特殊的形式,和new 有本質的區別。它是java中唯一不需要new 就可以產生對象的途徑。以String s="abcd";形式賦值在java中叫直接量,它是在常量池中而不是象new一樣放在壓縮堆中。

這種形式的字符串,在JVM內部發生字符串拘留,即當聲明這樣的一個字符串后,JVM會在常量池中先查找有有沒有一個值為"abcd"的對象,如果有,就會把它賦給當前引用.即原來那個引用和現在這個引用指點向了同一對象, 如果沒有,則在常量池中新創建一個"abcd",下一次如果有String s1 = "abcd";又會將s1指向"abcd"這個對象,即以這形式聲明的字符串,只要值相等,任何多個引用都指向同一對象。

而String s = new String("abcd");和其它任何對象一樣.每調用一次就產生一個對象,只要它們調用。也可以這么理解: String str = "hello"; 先在內存中找是不是有"hello"這個對象,如果有,就讓str指向那個"hello"。

如果內存里沒有"hello",就創建一個新的對象保存"hello". String str=new String ("hello") 就是不管內存里是不是已經有"hello"這個對象,都新建一個對象保存"hello"。

測試:

相關推薦:java入門
新聞名稱:詳細講解equals與==的區別
網頁地址:http://www.yuzhuanjia.cn/article/cpsphc.html

主站蜘蛛池模板: 午夜无码视频一区二区三区 | 99国产女人高潮抽搐喷浆视频 | 高清国产动漫大全 | 一区二区三区视频在线观看高清 | 午夜免费福利视频 | 91午夜精品福利美女在线播放 | 成a人片在线观看无码专区 成a人片在线观看中文漫画 | 爆乳隔壁人妻中文字幕 | av粉嫩国产不卡无码一区二区 | 丰满少妇愉情中文字幕18禁片 | 97精品视频在线 | 国产av无码一区二区三区dv | 国产aⅴ精品一区二区三区99 | 波多野结衣乱码中文字幕 | 一区二区三区视频日本精品 | 国产98 | 99久久精品国语对白 | 国产爆乳肉感大码在线视频 | 91精品手机国产在线能 | 果冻传媒av在线观看入口 | 午夜福利久久av | 午夜影院国产精品 | 午夜全免费一级毛片在线播放 | 午夜精品一区二区三区av | 午夜男生福利毛片在线 | 91精品欧美综合在线野草社区 | 99国产高清久久久久久网站 | 91制片厂果冻传媒首页 | 果冻传媒精品推荐在线观看 | 午夜一级毛 | 国产99精品视频 | 99精品欧美一区二区蜜桃免费 | 成人生活片网站 | 99久久久久久免费看 | 97天天干 | 一区二区三区夫妻精彩视频 | 波多野结av衣东京热 | 99久久无码精品一区二区毛片 | 99热这里只有精品91 | 福利片在线观看 | 午夜av内射一区二区三区红桃视 |