我對我的計算機科學課有一個問題有這個問題。如果一個字節在數字周圍有單引號(''),意味着什麼?
byte fun = '0';
System.out.println(fun);
答案是48,但是我班沒有人知道如何工作,或者它的意思。我們知道什麼是字節,但是圍繞它們引用單引號意味着什麼?
我對我的計算機科學課有一個問題有這個問題。如果一個字節在數字周圍有單引號(''),意味着什麼?
byte fun = '0';
System.out.println(fun);
答案是48,但是我班沒有人知道如何工作,或者它的意思。我們知道什麼是字節,但是圍繞它們引用單引號意味着什麼?
值在單引號不是byte
,它是一個char
文字。 Java將其轉換爲UNICODE-16數字值進行賦值。
原因一個得到一個錯覺,引號內的字符是一個字節是Java檢查是在一個範圍內的一個字節的值,可以讓你跳過投時,不需要它。同樣如此分配給short
類型或byte
變量整數常量:
byte b = 100;
上面將編譯,即使100
是文字int
類型,其比byte
更寬的,因爲編譯器知道該實際值符合在byte
。
這是不是這樣的任務普遍適用:如果你使用具有大於128 UNICODE-16值的字符,你會得到一個編譯時錯誤。
例如,這將不會編譯
byte a = 'ё';
觸發錯誤
error: incompatible types: possible lossy conversion from char to byte
有一個錯字: * wold *(會?)。 – 2015-03-26 00:29:59
任何字符周圍的單引號表示字符文字。
「0」是字面的字符0(其類型爲char
),其數值爲48,可自48被分配到一個byte
變量沒有明確的類型轉換爲byte
有效值的。
單個ticks用於在Java源代碼中編寫char值文字。
因此'0'表示char值;並且有一個隱式轉換爲字節
(見Java - why does char get implicitly cast to byte (and short) primitive, when it shouldn't?爲什麼這是)
谷歌的UnicodeTable和檢查'0'性格有什麼指數在它(十進制) – Pshemo 2015-03-25 11:09:30