1. 程式人生 > >對象中"=="與"equals()"

對象中"=="與"equals()"

情況 ava 方法 IV brush 不同 java system div

Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
System.out.println(i1==i2);
System.out.println(i1.equals(i2));

 輸出結果為:false true

原因:

兩個對象內容相同,但句柄確是不同的,而“==”,“!=”比較的是對象句柄。

若要比較兩個對象中的內容需要用equals()方法。


J1 j1 = new J1();
J1 j2 = new J1();
j1.a = j2.a = 10;
System.out.println(j1==j2);
System.out.println(j1.equals(j2));

  輸出結果:false false(J1為自定義類型)

原因:

默認情況下(自定義的類),equals()比較的是句柄。要使其對對象內容比較,需要自己在類中改變equals()。

大多數Java類庫都實現了equals(),例如上面的Integer類

對象中"=="與"equals()"