原文:https://blog.csdn.net/qq_41268447/article/details/96759597 首先我們先說一下java堆內(nèi)存和棧內(nèi)存 java中八個(gè)基本數(shù)據(jù)類型就是值類型,存放在棧內(nèi)存中;引用類型存放在堆內(nèi)存中。 然后我們再看一看兩種不同比較字符串的方法 (1)equals比較兩個(gè)String對(duì)象的值是否相等 String str1 = "hello quanjizhu"; String str2 =str1+"haha"; String str3 = new String("hello quanjizhu"); System.out.println(str1.equals(str2)); //false System.out.println(str1.equals(str3)); //true (2)= =:比較兩個(gè)String對(duì)象的指向的內(nèi)存地址是否相等 String str1 = "hello quanjizhu"; String str2 =str1+"haha"; String str3 = new String("hello quanjizhu"); System.out.println(str1==str2);//false System.out.println(str1==str3); //false 3.String 創(chuàng)建 String str1 = new String("abc"); Stirng str2 = "abc"; 1 2 前者str1的創(chuàng)建會(huì)直接在堆中創(chuàng)建一個(gè)String對(duì)象,然后將該對(duì)象的引用返回給用戶,注意前者jvm不會(huì)自己將字符串放入常量池中,除非運(yùn)用intern方法。 后者jvm會(huì)現(xiàn)在常量池中尋找是否有該常量,如果有則返回給用戶,沒有則會(huì)先創(chuàng)建一個(gè)常量放入常量池中,然后再堆中創(chuàng)建一個(gè)對(duì)象指向這個(gè)常量,最后返回給用戶 下面舉個(gè)例子吧 String str1 = new String("abc"); //jvm 在堆上創(chuàng)建一個(gè)String對(duì)象 //jvm 在strings pool中找不到值為“abc”的字符串,因此 //在堆上創(chuàng)建一個(gè)String對(duì)象,并將該對(duì)象的引用加入至常量池中 //此時(shí)堆上有兩個(gè)String str1 str2 對(duì)象 Stirng str2 = "abc"; if(str1 == str2){ System.out.println("str1 == str2"); }else{ System.out.println("str1 != str2"); //打印結(jié)果是 str1 != str2,因?yàn)樗鼈兪嵌焉蟽蓚€(gè)不同的對(duì)象 再舉個(gè)例子 String str1 = new String("abc"); //jvm 在堆上創(chuàng)建一個(gè)String對(duì)象 str1 = str1.intern(); //將abc放入常量池中 //此時(shí),jvm發(fā)現(xiàn)strings pool中已有“abc”對(duì)象了 //因此直接返回str1指向的對(duì)象給str2,也就是說str2和str1引用著同一個(gè)對(duì)象, //此時(shí),堆上的有效對(duì)象只有一個(gè)。 Stirng str2 = "abc"; if(str1 == str2){ System.out.println("str1 == str2"); }else{ System.out.println("str1 != str2"); } //打印結(jié)果是 str1 == str2 4.字符串的串接 因?yàn)榇嬖诔A砍刂械某A恳唤?jīng)創(chuàng)建后不可以改變,但是出現(xiàn)串接的操作會(huì)改變字符串的內(nèi)容和長度,這不就矛盾了么,所以再出現(xiàn)串接時(shí),java會(huì)自己new一個(gè)新的對(duì)象一步步的存儲(chǔ)內(nèi)容,但是這樣做又非常麻煩啊,畢竟需要一步步的new對(duì)象,存對(duì)象。所以java又提供了StringBuffer/SringBulider類,他在做串接的時(shí)候改變的是內(nèi)部的值,而不會(huì)new對(duì)象。
成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元葉集做網(wǎng)站,已為上家服務(wù),為葉集各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
網(wǎng)站名稱:淺談java中String相關(guān)問題
URL標(biāo)題:http://jinyejixie.com/article26/jjphjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、小程序開發(fā)、全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)