java編程思想(關係運算符)

    關係運算符生成的事一個「布爾」(Boolean)結果。它們評價的是運算對象值之間的關係。若關係是真實的,關係表達式會生成true(真);若關係不真實,則生成false(假)。關係運算符包括小於(<)、大於(>)、小於或等於(<=)、大於或等於(>=)、等於(==)以及不等於(!=)。等於和不等於適用於全部內建的數據類型,但其餘比較不適用於boolean類型。java

    1 檢查對象是否相等。ui

        關係運算符==和!=也適用於全部對象。code

//: Equivalence.java
public class Equivalence {
	public static void main(String[] args) {
		Integer n1 = new Integer(47);
		Integer n2 = new Integer(47);
		System.out.println(n1 == n2);
		System.out.println(n1 != n2);
	}
} /// :~

其中,表達式System.out.println(n1 == n2);可打印出內部的布爾比較結果。通常人都會認爲輸出結果確定先是ture,再是false,由於兩個Integer對象都是相同的。但儘管對象的內容相同,句柄倒是不一樣的,而==和!=比較的正好就是對象句柄。因此輸出結果上實際上先是false,再是true。這天然會使第一次接觸的人感到驚奇。對象

若想對比兩個對象的實際內容是否相同,又該如何操做呢?此時,必須使用全部對象都適用的特殊方法equals()。但這個方法不適用於「主類型」,那些類型直接適用== 和!=便可。class

//: EqualsMethod.java
public class EqualsMethod {
	public static void main(String[] args) {
		Integer n1 = new Integer(47);
		Integer n2 = new Integer(47);
		System.out.println(n1.equals(n2));//true
	}
} /// :~

正如咱們預計的那樣,此時獲得的結果是true。但事情並未到此結束!假設建立了本身的類,就象下面這樣:數據類型

//: EqualsMethod2.java
class Value {
	int i;
}

public class EqualsMethod2 {
	public static void main(String[] args) {
		Value v1 = new Value();
		Value v2 = new Value();
		v1.i = v2.i = 100;
		System.out.println(v1.equals(v2));//false 這是因爲equals()默認行爲是比較句柄的
        //必需要重寫equals()方法
	}
} /// :~
相關文章
相關標籤/搜索