java 字符与整型相加_Java - 一道關於整型和字符類型相加的題目

題目

public class Test {

public static void main(final String[] args) {

final int a = 10;

final int b = 20;

System.out.println(a + '+' + b + '=' + (a + b));

}

}

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

10+20=30

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

164

分析

為什么答案會是164?

這是因為這里並不是字符串拼接,而是整型與字符類型的加法運算。

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

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

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

題目變形

其一

public class Test {

public static void main(final String[] args) {

final int a = 10;

final int b = 20;

System.out.println(a + "+" + b + "=" + (a + b));

}

}

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

其二

public class Test {

public static void main(final String[] args) {

System.out.println('A');

System.out.println((int)'A');

}

}

這道題的答案是:

A

65

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值