A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sunsteam 中级黑马   /  2015-8-20 00:20  /  586 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class  Test819
  2. {
  3.         public static void main(String args[])
  4.         {
  5.                 char a = 5;
  6.                 char b = 6;
  7.                 //char c = a+b;
  8.                 char d =5+6;
  9.                 char e ='t';
  10.                 System.out.println(a);
  11.                 System.out.println(b);
  12.                 //System.out.println(c);
  13.                 System.out.println(d);
  14.                 System.out.println(e);
  15.                 System.out.println(a+b);
  16.                 System.out.println(a+e);

  17.         }
  18. }
复制代码
char d 是可以通过的  为什么char c就会报错呢?

10 个回复

倒序浏览
应为 char c 中 的char 类型在运算中 隐含转换成了int型 int赋值给char时需要 强制转换

但是 char d 中数字运算时并没有 隐含转换的功能,所以赋值给char 没问题
回复 使用道具 举报
类型转换的问题
回复 使用道具 举报
char d 表示的是两个字符(ASC码值),因此a+b的结果依旧是字符型即为ASC码值,而char c=a+b;中的a和b相当于两个变量,默认的类型为int型,因此,在运行时会出现错误。改成 char c=(char)(a+b)即可
回复 使用道具 举报
char类型在运算时默认转换为int,类型,相加的结果也就为int类型,所以如果不强制转换就会报错.
回复 使用道具 举报
??????????????????
回复 使用道具 举报
a+b应该是int型的吧,要强制int转char要显式转换
回复 使用道具 举报
不晓得  = =
回复 使用道具 举报
iamzk 中级黑马 2015-8-20 22:35:47
9#
类型自动提升造成的
回复 使用道具 举报
数字做运算默认转为int型的,如果 int c=a+b;就对了,或者强转.因为int的类型要比char类型要大,大的类型不能往小的类型里转.    至于 char d =5+6;为什么可以,是因为5+6为11,虽然也是大类型往小类型转,但是已经明确5+6的值是在char的范围之内的.   在编译的时候只运行,不计算.char c=a+b时,a,和b仅仅只是变量,不知道值是多少;   
回复 使用道具 举报
因为a+b相加的时候把a 和b都转成了int类型的。  所以用char接收就会报错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马