[javaSE] 類型轉換(1加1等於幾),javase等於
列印 ‘a’+1,輸出98,解釋:’a’是char類型佔2個8bit,1是int類型佔4個,’a’字元會被自動強制轉換為int類型對應ascii碼錶97
列印’1’+1,輸出 50,解釋:’1’是char類型,會被自動型別提升為int類型,對應ascii表49
定義byte b=3
b=b+2
此時會編譯報錯,可能損失精度,byte b在記憶體中預設是佔一個8bit,int 2在記憶體中預設是佔4個8bit,不同類型不能計算,必須自動型別提升轉換,小的往大的提升,byte b會往int型別提升,此時可以計算,計算結果是4個8bit,結果從新賦值給byte b的時候,會損失精度
強制類型轉換
上面的代碼修改成 b=(byte)(b+2),此時就不會報錯了,int類型強制轉換為byte
public class VariableDemo { /** * @param args */ public static void main(String[] args) { System.out.println('a' + 1);// 輸出 98 System.out.println('1' + 1);// 輸出 50 }}
PHP版:
PHP中是弱類型語言,列印 ‘1’+1會輸出 2,String類型’1’被自動轉成了int類型
強轉只有這些 (int) (bool) (float) (string) (array) (object)
<?phpclass VariableDemo{ public static function main(){ var_dump('a'+1);//輸出 int(1) var_dump((int)'1');//輸出 int(1) var_dump((bool)'1');//輸出 bool(true) var_dump((array)'1');//輸出 array(1) { [0]=> string(1) "1" } var_dump((object)'1');//輸出 object(stdClass)#1 (1) { ["scalar"]=> string(1) "1" } }}VariableDemo::main();