为了账号安全,请及时绑定邮箱和手机立即绑定

大问题,求解

public class x1 {
public static void main(String[] args) {
int x = 1;
short t = 12+'a';
char c = 'a'+1;
char m = 'a'+x;
byte n = 'a'+1;
}
}

为什么第三行

char m = 'a'+x;

会报错,而其他+1的就不报错

正在回答

2 回答

数据类型自动转换,在向下转换时可以直接将 int 常量字面量赋值给 byte、short、char 等数据类型,而不需要强制转换,只要该常量值不超过该类型的表示范围都能自动转换。

第三行x是int变量,因为x的值是可变的,很有可能导致最后结果溢出,所以会报错。可以写成char m = (char)('a'+x);,告诉系统,就算结果溢出了我也要转成char类型的。

0 回复 有任何疑惑可以回复我~

x 是int型。不能自动转换成 c 的char型。 

0 回复 有任何疑惑可以回复我~
#1

狼王梦0_0 提问者

那为什么B也是+1啊?为什么就可以?不懂
2019-09-11 回复 有任何疑惑可以回复我~
#2

狼王梦0_0 提问者

char c = 'a'+1;
2019-09-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165225    人
  • 解答问题       17581    个

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

进入课程

大问题,求解

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信