為何short s1 = 1;是對的,而float f=3.4;是錯的?
整數直接量,默認是int型。所以int a = 4L; 會報錯,但是long l = 4; 這樣不會,因為這樣會形成一個自動類型的轉換,int類型自動轉換為long類型 小數直接量,默認是double類型。所以float f = 3.4; 會報錯,由double類型轉為float類型是大轉小,需要強轉。?記住小類型轉大類型會自動轉換,大類型到小類型需要強轉,因為會丟失精度或者溢出。(布爾型不參與,char類型相當于int類型) 整數直接量可以直接賦值給byte,short,char,但是不能超出范圍。 byte,short,char型數據參與運算時,先一律轉換為int再運算。?
short s = 5;
s = s + 10; // 這里會出現編譯錯誤,因為s參與運算,這時會自動轉換為int型,s + 10 的值為int型,int型不能直接賦值給short型,需要強轉
s += 10; // 這里不會出現錯誤,因為擴展賦值運算符自帶強轉功能