Java中 比較運算子和equals詳解

2021-06-09 18:04:32 字數 1374 閱讀 9973

==比較的是兩個基本資料型別的值是否相等,或者兩個物件的引用位址是否一樣。

如下**:

public static void main(string args)
執行的結果為:true   false   true

原因:(1)a和b都是基本資料型別,值也相等,所以 a==b 為true

(2)integer c = 1000 是將乙個基本資料型別的值賦給物件的引用。這裡涉及到了裝箱的概念,

就是把把基本型別用它們相應的引用型別包裝起來,使其具有物件的性質。

編譯器用的是public static integer valueof(int i)方法。

來看下它的原始碼:

public static integer valueof(int i) 

return new integer(i);

}

當i的值在[-128,127]之間時,返回的是integercache快取的物件的已用,否則返回的是新的物件的引用。

因此,c 和 d 是兩個不同的物件, e 和 f 是兩個相同的物件。

通過除錯也可以看到他們的id值也說明了這一點。

所以,c==d 為 false ,e==f 為 true。

equals比較的是兩個物件是否相等。由於每個類都是使用object作為超類的,所以所有物件(包括陣列)也實現這個類方法。

對於object類的equals方法源**如下:

public boolean equals(object obj)
可以看到它呼叫的就是 == 比較運算子。因此下面的**結果就很容易看出為false了。

public static void main(string args)
可是有時候會有特例出現,例如如下**:

public static void main(string args)
執行的結構為: true true

原來string類重寫了equals方法。我們來看一下原始碼:

public boolean equals(object anobject) 

if (anobject instanceof string)

return true;}}

return false;

}

如果比較的是物件,就直接用==比較運算子。

如果比較的是string物件的例項,就比較這兩個string的值是否相等。因此結果就都是true了。

5 算術運算子和比較運算子

select product name,sale price,sale price 2 as sale price x2 from product 運算是以行為單位執行的 法則2 6 select子句中可以使用常數或者表示式 所有包含null的計算,結果肯定是null 通常情況下,類似5 0這樣除數...

js 算術運算子和比較運算子

自增1 自減單獨使用的 字首和字尾都是自增自減,沒有什麼特別卻別 和其他表示式一起使用是,作為字首,先自增自減,再做其他操作 作為字尾,先做其他操作再自增自減 var num 5 num 相當於 num num 1 console.log num 4 num console.log num 5 nu...

賦值運算子 比較運算子 和邏輯運算子

基本賦值運算子就是乙個符號 代表將左邊的資料交給左側的變數。int a 30 符合復合賦值運算子 a 3 相當於 a a 3 b 4 相當於 b b 4 c 5 相當於 c c 5 d 6 相當於 d d 6 7 7 相當於 e 7 7 int a 10 a 5 system.out.println...