Integer忽視的地方

		Integer i1 = Integer.valueOf(127);
		Integer i2 = Integer.valueOf(127);

		System.out.println(i1 == i2);
		System.out.println(i1.equals(i2));

		System.out.println("--------------------------");

		Integer i3 = Integer.valueOf(128);
		Integer i4 = Integer.valueOf(128);

		System.out.println(i3 == i4);
		System.out.println(i3.equals(i4));

結果:

true
true
--------------------------
false
true

近來在項目中對兩個對象判斷父子關係時,一直是false,但debug時發現明明是true啊,怎麼回事啊?

忽然想起Integer是對象,不能使用==進行判斷,要使用equals進行判斷。

對兩個Integer進行==比較,如果在Byte範圍內,是true(進行了緩存)。超出範圍,就是false。

因爲==基本類型判斷的是數值,在對象判斷時判斷的是內存地址,而Interger也是對象,不能使用==進行判斷,要使用equals方法。

當然也可以這樣

System.out.println(i3.intValue() == i4.intValue());

一直一來都忽視了這個問題,現在才發現,以後一定要注意。

謹此特記!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章