比如byte b = 1; char c = 1;,如果整数类型默认是int类型的话,那么byte b = 1;应该需要强转换才对,因为int是高精度的,但这里明显不报错,这是为什们呢?
byte b = 1; char c = 1;
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
首先,整數型別預設是int。這個毫無疑問。 其次,在允許的類型範圍內,在此處byte:-128~127 而整數int 1 在這個範圍,編譯器會對常數自動進行向下的轉換。 如果超出這個範圍的常數,編譯器直接報錯。
byte,short,char,boolean在底層都是當做int來處理的
不對的,兩個整形相加,如果小於等於int,則預設是int,如果其中一個為long,則預設按照long;
你試試申明兩個byte變量,然後相加賦值給另一個byte變量,編譯器會提示出錯的,需要強制型別轉換的
看看這篇:http://www.programgo.com/arti...
分自動轉換和強制轉換的
首先,整數型別預設是int。這個毫無疑問。
其次,在允許的類型範圍內,在此處byte:-128~127
而整數int 1 在這個範圍,編譯器會對常數自動進行向下的轉換。
如果超出這個範圍的常數,編譯器直接報錯。
byte,short,char,boolean在底層都是當做int來處理的
不對的,兩個整形相加,如果小於等於int,則預設是int,如果其中一個為long,則預設按照long;
你試試申明兩個byte變量,然後相加賦值給另一個byte變量,編譯器會提示出錯的,需要強制型別轉換的
看看這篇:http://www.programgo.com/arti...
分自動轉換和強制轉換的