亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺析java中String類型中“==”與“equal”的區(qū)別

瀏覽:4日期:2022-08-26 14:08:51

一、前言

1.1、首先很多人都知道,String中用“==”比較的是地址,用equals比較的是內(nèi)容,很多人對(duì)此用的是記憶法,通過記憶來(lái)加強(qiáng)此的引用,但是其真正的原理其實(shí)并不難,當(dāng)我們真正明白其為什么的時(shí)候,用起來(lái)也會(huì)更加靈活,更加有底氣(形容得不太好,朋友別見怪);

二相關(guān)知識(shí)的準(zhǔn)備

類型常量池 運(yùn)行時(shí)常量池 字符串常量池

我們今天討論的主題是當(dāng)然是字符串常量池:為什么在這要把另外兩個(gè)常量池拿出說(shuō)一下呢,首先小生我在網(wǎng)上或者cnds上看到很多人在爭(zhēng)論字符串常量池是存在與方法區(qū)還是堆里面,因此我在這里面非常負(fù)責(zé)任的告訴各位讀者:1、類型常量池,存放在方法區(qū)里面,每個(gè)class文件都有一個(gè)2、運(yùn)行時(shí)常量池、存放在方法區(qū)里面,所有class共用3、字符串常量池:存放在堆區(qū)里面而且字符串常量池有一個(gè)特點(diǎn):存放的常量唯一:三、 開始

3.1,情況一

public class Test2 {public static void main(String[] args) {String a ='張敬軒';String b ='張敬軒';System.out.println(a == b);System.out.println(a.equals(b));}}

運(yùn)行結(jié)果:

淺析java中String類型中“==”與“equal”的區(qū)別

true true

解釋:因?yàn)楫?dāng)我們String a = “張敬軒”;的時(shí)候,會(huì)在堆里面的字符串常量池里面“搜索”是否有“張敬軒”這個(gè)對(duì)象,

有:就會(huì)將“張敬軒這個(gè)對(duì)象的地址指向a” 沒有:就會(huì)在字符串常量池里面新建立一個(gè)“張敬軒”,然后就會(huì)把地址引用賦值給a

當(dāng)再聲明String b = “張敬軒';和第一次聲明String = “張敬軒”;一樣,先”搜索“,然后因?yàn)橐呀?jīng)存在了”張敬軒“這個(gè)對(duì)象,那么就不會(huì)再創(chuàng)建對(duì)象,而是將存在的”張敬軒“的地址引用賦值給b,所以a和b的地址一樣,內(nèi)容自然也一樣,所以兩個(gè)結(jié)果為true,不懂各位朋友懂沒懂?

3.2,情況二;

public class Test2 {public static void main(String[] args) {String a ='張敬軒'; String b = new String('張敬軒');System.out.println(a == b);System.out.println(a.equals(b));}}

結(jié)果是

淺析java中String類型中“==”與“equal”的區(qū)別

false,true解釋String a = “張敬軒”;已經(jīng)解釋過了,是在堆里面的字符串常量池創(chuàng)建對(duì)象String b = new String(“張敬軒”);這個(gè)也是在堆區(qū)里面創(chuàng)建對(duì)象,但是不是在字符串常量池里面創(chuàng)建對(duì)象兩個(gè)不同的對(duì)象,地址自然不同,類容都是張敬軒,所以結(jié)果是false,true

3.3、情況三

public class Test2 {public static void main(String[] args) {String a = new String('張敬軒'); String b = new String('張敬軒');System.out.println(a == b);System.out.println(a.equals(b));}}

結(jié)果:false,true

淺析java中String類型中“==”與“equal”的區(qū)別

解釋,因?yàn)閚ew (“張敬軒”);表示在堆區(qū)的非字符串常量池里面創(chuàng)建了兩個(gè)不同的對(duì)象,兩次new就創(chuàng)建了兩個(gè),所以地址是不同的,因此結(jié)果是false,true

3.4、情況四

public class Test2 {public static void main(String[] args) {String a = '張'+'敬軒';String b = '張敬軒';System.out.println(a == b);System.out.println(a.equals(b));}}

結(jié)果是:true,true

淺析java中String類型中“==”與“equal”的區(qū)別

解釋:String = “張敬” + ”軒“;在編譯的時(shí)候就已經(jīng)開始進(jìn)行計(jì)算:這是Java編譯的優(yōu)化機(jī)制,所以a指向的地址依舊是”張敬軒“;所以情況和前面的情況一一致,所以是true,true(注意Java編譯優(yōu)化機(jī)制只針對(duì)常量不針對(duì)變量 a = a+ b(這個(gè)是沒有優(yōu)化機(jī)制的,關(guān)于Java編譯機(jī)制,各位小伙伴可以去百度了解一下))

3.5、情況五

public class Test2 {public static void main(String[] args) {String a = '張';String b = '敬軒';String c =a+b;String d = '張敬軒';System.out.println(d == c);System.out.println(d.equals(c));}}

結(jié)果:

淺析java中String類型中“==”與“equal”的區(qū)別

解釋:因?yàn)閍 和 b是變量,不存在什么Java優(yōu)化機(jī)制,而是將兩個(gè)c = a + b存放在的是堆區(qū)的非字符常量池里面,所以是兩個(gè)不同的對(duì)象,自然為false,true3.6、最后一種情況

public class Test2 {public static void main(String[] args) {String a = '張';String b = '敬軒';String c =(a+b).intern();String d = '張敬軒';System.out.println(d == c);System.out.println(d.equals(c));}}

結(jié)果:

淺析java中String類型中“==”與“equal”的區(qū)別

解釋:intern();方法是將堆區(qū)里面的非字符常量池里面的對(duì)象強(qiáng)行放到字符常量池里面,因?yàn)樽址A砍乩锩鎸?duì)象的唯一性,如果字符串常量池里面已經(jīng)有了和”張敬軒“一樣的對(duì)象,就會(huì)將其地址引用賦值給c,沒有就相當(dāng)于創(chuàng)建一個(gè)(也就是和之前堆區(qū)里面那個(gè)對(duì)象一樣的對(duì)象),有了的話,就會(huì)將原來(lái)有的那個(gè)“張敬軒”對(duì)象賦值給c,因?yàn)榈刂芬粯樱詾閠rue

總結(jié):

== 比較的地址 (如果對(duì)象存在字符串常量池,而且類容相同,那么 == 返回的是true )equal 比較的是內(nèi)容 (內(nèi)容相同返回便是true)(所以在以后的開發(fā)中一般是用equal比較字符串的

各位朋友如果有錯(cuò)的及時(shí)評(píng)論區(qū)指出,謝謝大家的支持

到此這篇關(guān)于淺析java中String類型中“==”與“equal”的區(qū)別的文章就介紹到這了,更多相關(guān)java String類型 ==與equal內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 成人午夜毛片 | 亚洲国产精品久久日 | xxx性欧美人 | 婷婷久久综合九色综合九七 | 在线成人天天鲁夜啪视频 | 大杳蕉伊人狼人久久一本线 | 2020阿v天堂网手机版 | 婷婷四房综合激情五月性色 | 国产九九在线视频 | 国产麻豆视频网站 | 欧美日韩视频在线观看高清免费网站 | 2022国内精品免费福利视频 | 香蕉免费网站 | 在线亚洲一区 | 又黄又爽视频 | 麻豆网站在线播放 | 亚洲在线视频一区 | 欧美日韩精品一区二区三区 | 久久综合九色综合精品 | 日本一区毛片免费观看 | 久久夏同学国产免费观看 | 美美女高清毛片视频黄的一免费 | 免费看a毛片 | 久久成人18 | 奇米影视狠狠干 | 91视频精选 | 日韩一区二区不卡 | 美欧毛片| 亚洲一区免费在线 | 月婷婷色狠狠 | 亚洲 欧美 自拍 另类 欧美 | 66j8免费视频 | 丁香激情综合 | 久久99精品一久久久久久 | 国产网红主播精品福利大秀专区 | 免费艹逼视频 | 久久国产精彩视频 | 国产在线欧美日韩精品一区二区 | 久久免费激情视频 | 久久久国产精品va麻豆 | 国产最新在线视频 |