您好,登錄后才能下訂單哦!
小編給大家分享一下Java中關(guān)系操作符“==”指的什么意思,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
關(guān)系操作符“==”到底比較的是什么?
下面這個(gè)句話(huà)是摘自《Java編程思想》一書(shū)中的原話(huà):"關(guān)系操作符生成的是一個(gè)boolean結(jié)果,它們計(jì)算的是操作數(shù)的值之間的關(guān)系”。
這句話(huà)看似簡(jiǎn)單,理解起來(lái)還是需要細(xì)細(xì)體會(huì)的。說(shuō)的簡(jiǎn)單點(diǎn),==就是用來(lái)比較值是否相等。
下面先看幾個(gè)例子:
public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int n=3; int m=3; System.out.println(n==m); String str = new String("hello"); String str1 = new String("hello"); String str2 = new String("hello"); System.out.println(str1==str2); str1 = str; str2 = str; System.out.println(str1==str2); } }
輸出結(jié)果為:
true false true
n==m結(jié)果為true,這個(gè)很容易理解,變量n和變量m存儲(chǔ)的值都為3,肯定是相等的。而為什么str1和str2兩次比較的結(jié)果不同?要理解這個(gè)其實(shí)只需要理解基本數(shù)據(jù)類(lèi)型變量和非基本數(shù)據(jù)類(lèi)型變量的區(qū)別。
對(duì)于這8種基本數(shù)據(jù)類(lèi)型的變量,變量直接存儲(chǔ)的是“值”,因此在用關(guān)系操作符==來(lái)進(jìn)行比較時(shí),比較的就是 “值” 本身。要注意浮點(diǎn)型和整型都是有符號(hào)類(lèi)型的,而char是無(wú)符號(hào)類(lèi)型的(char類(lèi)型取值范圍為0~2^16-1).
也就是說(shuō)比如:
int n=3; int m=3;
變量n和變量m都是直接存儲(chǔ)的"3"這個(gè)數(shù)值,所以用==比較的時(shí)候結(jié)果是true。
而對(duì)于非基本數(shù)據(jù)類(lèi)型的變量,在一些書(shū)籍中稱(chēng)作為 引用類(lèi)型的變量。比如上面的str1就是引用類(lèi)型的變量,引用類(lèi)型的變量存儲(chǔ)的并不是 “值”本身,而是于其關(guān)聯(lián)的對(duì)象在內(nèi)存中的地址。
比如下面這行代碼:
String str1;
這句話(huà)聲明了一個(gè)引用類(lèi)型的變量,此時(shí)它并沒(méi)有和任何對(duì)象關(guān)聯(lián)。
而通過(guò)new String("hello")來(lái)產(chǎn)生一個(gè)對(duì)象(也稱(chēng)作為類(lèi)String的一個(gè)實(shí)例),并將這個(gè)對(duì)象和str1進(jìn)行綁定:
str1= new String("hello");
那么str1指向了一個(gè)對(duì)象(很多地方也把str1稱(chēng)作為對(duì)象的引用),此時(shí)變量str1中存儲(chǔ)的是它指向的對(duì)象在內(nèi)存中的存儲(chǔ)地址,并不是“值”本身,也就是說(shuō)并不是直接存儲(chǔ)的字符串"hello"。這里面的引用和C/C++中的指針很類(lèi)似。
因此在用==對(duì)str1和str2進(jìn)行第一次比較時(shí),得到的結(jié)果是false。因此它們分別指向的是不同的對(duì)象,也就是說(shuō)它們實(shí)際存儲(chǔ)的內(nèi)存地址不同。
而在第二次比較時(shí),都讓str1和str2指向了str指向的對(duì)象,那么得到的結(jié)果毫無(wú)疑問(wèn)是true。
看完了這篇文章,相信你對(duì)Java中關(guān)系操作符“==”指的什么意思有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。