Java 一道關於整型和字元型別相加的題目

2021-09-22 06:47:17 字數 907 閱讀 5353

public

class

test

}

乍一看,可能有的同學會覺得很簡單,直接給出如下答案:

10+20

=30

其實這是道陷進題,很容易就看混了,正確的答案是:

164
為什麼答案會是164

這是因為這裡並不是字串拼接,而是整型與字元型別的加法運算。

用一對單引號'包括起來的是字元,用一對雙引號"包括起來的是字串。

對於字串來說,用+拼接起來的結果還是字串。但這道題中,用+拼接起來的是整型和字元型別,就變成了單純的加法運算。在加法運算中,資料型別會從低位自動轉換成高位,因為高位轉低位會有資料溢位導致丟失精度的風險。

當整型與字元型別相加時,字元型別會轉換成整型,也就是轉換成對應的ascii碼值。於是乎,a + '+' + b + '=' + (a + b)就變成了10 + 43 + 20 + 61 + (10 + 20),其運算結果就是164

public

class

test

}

這道題的答案就是10+20=30了。

public

class

test

}

這道題的答案是:

a

65

如果我們想知道某個字元對應的ascii碼是多少,可以將其轉換成整型,這個值就是其ascii碼值。

一道java基礎題

題目 要求隨機產生20個0 100之間的數字,並對這20個數字以10的倍數進行歸類,然後列印。如 10 7 9 5 30 22 25 29 50 49 45 public static void main string args 隨機產生20個0 100之間的數字,並放入list中 return p...

關於字串和指標的一道小例題

str1和str2是兩個字串陣列,我們會為它們分配兩個長度為12個位元組的空間,並把 hello world 的內容分別複製到陣列中去。這是兩個初始位址不同的陣列,所以,str1和str2的值也不同。str3和str4是兩個指標,我們無需為它們分配記憶體以儲存字串的內容,只需要把它們指向 hello...

一道關於字串處理的題

題目要求 按要求分解字串,輸入兩個數m,n m代表輸入的m串字串,n代表輸出的每串字串的位數,不夠補0。例如 輸入2,8,abc 123456789 則輸出為 abc00000 12345678 90000000 include include include include include inc...