三目混合不同數據雜亂知識

三目不同類型混合總結

整型與浮點數據類型混合

整型直接向浮點看齊

 

基本數據類型byte char short int long之間混合

1、數據類型是否相同,相同返回類型確定

2、數據類型不同,看編譯期能否識別兩個類型大小範圍

3、不能識別則取最大類型

4、能識別 看兩個類型範圍,大朝小看

5、範圍超,取大類型,否則取小

        
非全是基本數據類型

1、xx? int : Object;找最大父類--Object

2、xx? int : Integer;Integer拆箱成int

總結:三目運算涉及基本數據類型和包裝類時,會默認以基本數據類型爲標準輸出,拆箱。涉及基本數據和非包裝類對象引用時,會以最大父類Object爲輸出。System.out.println(map == null ? 1L: map.get("a"));//涉及基本類型和引用~不同類型找最大父類Object,相同類型拆箱

 

直接附代碼:

import java.util.HashMap;
import java.util.Map;

public class Test {
	public static void main(String[] args) {
		test(2, 3);
		
//		三目不同類型混合總結:
//		整型直接向浮點看齊
		
//		基本數據類型byte char short int long:
//		1、數據類型是否相同,相同返回類型確定
//		2、數據類型不同,看編譯期能否識別兩個類型大小範圍
//		3、不能識別則取最大類型
//		4、能識別 看兩個類型範圍,大朝小看
//		5、範圍超,取大類型,否則取小
		
//		非全是基本數據類型:
//		1、xx? int : Object;找最大父類--Object
//		2、xx? int : Integer;Integer拆箱成int
//		總結:三目運算涉及基本數據類型和包裝類時,會默認以基本數據類型爲標準輸出,拆箱。
//		涉及基本數據和非包裝類對象引用時,會以最大父類Object爲輸出
//		System.out.println(map == null ? 1L: map.get("a"));//涉及基本類型和引用~不同類型找最大父類Object,相同類型拆箱
	}
	
	public static void test(int i, int i2) {
		System.out.println(i == i2 ? 9.9 : 9);//輸出9.0 整型和浮點型,直接向浮點數看齊
		System.out.println(i == i2 ? 'a' : 98);//輸出b 編譯器可以識別類型大小範圍,因爲98在char範圍內,向char看齊將98轉爲b
		System.out.println(i == i2 ? 'a' : Integer.MAX_VALUE);//輸出2147483647 超過了char範圍,向大類型int看齊
		System.out.println(i != i2 ? 'a' : i);//輸出97 不能識別類型大小範圍,直接向大類型int看齊
		
		//不同類型,1L : Object 輸出null
		Map<String,Object> map2 = new HashMap<>();
		map2.put("b", 1L);
		System.out.println(map2 == null ? 1L : map2.get("a"));
		
		//相同類型,1L : map.get 輸出報錯 null轉爲Long異常
		Map<String,Long> map = new HashMap<>();
		map.put("b", 1L);
		System.out.println(map == null ? 1L : map.get("a"));
	}

}

運行結果:

 

 

 

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