我覺得我找不到這個問題的答案很愚蠢,但我正在為班級做作業,我被要求描述以下示例代碼的輸出:
int i = 1;
for (i = 0; i <= 6; i ){
System.out.print( 'i' i);
}
輸出:
105106107108109110111
((我知道在回圈條件之前不需要將 i 初始化為 1))我不明白為什么上面的 print 陳述句會輸出這種數字模式(1 05 1 06 1 07 1 08 1 09 1 10 1 11)。簡單地將其保留為
System.out.print( 'i');
按預期列印“i”5 次。那么為什么添加 i 的值會改變 'i' 的輸出呢?
編輯:固定變數名
uj5u.com熱心網友回復:
因為'i'是型別的字符文字char。添加 char 值和 int 值會自動將其提升為 int。小寫 i 的 ASCII 值是 105(十六進制的 0x69)。
所以你所擁有的是System.out.print(105 i)等等。
如果要連接字串,則必須使用字串:System.out.print("i" i)或System.out.printf("i%d", i)
uj5u.com熱心網友回復:
j在此代碼段中似??乎未初始化,因此它甚至不應該編譯。如果您j在范圍內的其他地方有一個變數,您的for回圈將使用它。
另請注意,'j' j正在嘗試將(可能)整數添加到 a char,這會將其提升為 a int,因此您正在列印'j'plus 的整數代碼點,無論變數j是什么。
uj5u.com熱心網友回復:
在 java 中,您可以添加charwithint并且該字符將隱式轉換為相應的 ASCII 碼。
在您的列印陳述句中,您使用的是單引號,因此它將被推斷為字符。
還要注意字母表的 ASCII 碼i等于105.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/510259.html
標籤:爪哇细绳
