黑马程序员技术交流社区

标题: 类型转换的问题 [打印本页]

作者: sunsteam    时间: 2015-8-20 00:20
标题: 类型转换的问题
  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就会报错呢?


作者: liuch111    时间: 2015-8-20 10:17
应为 char c 中 的char 类型在运算中 隐含转换成了int型 int赋值给char时需要 强制转换

但是 char d 中数字运算时并没有 隐含转换的功能,所以赋值给char 没问题
作者: kevin986745zk    时间: 2015-8-20 10:30
类型转换的问题
作者: taoaisheng    时间: 2015-8-20 20:08
char d 表示的是两个字符(ASC码值),因此a+b的结果依旧是字符型即为ASC码值,而char c=a+b;中的a和b相当于两个变量,默认的类型为int型,因此,在运行时会出现错误。改成 char c=(char)(a+b)即可
作者: burningzzy    时间: 2015-8-20 20:54
char类型在运算时默认转换为int,类型,相加的结果也就为int类型,所以如果不强制转换就会报错.
作者: 飞飞小狮子    时间: 2015-8-20 21:09
??????????????????
作者: 阮文江    时间: 2015-8-20 21:30
a+b应该是int型的吧,要强制int转char要显式转换
作者: 段山虎    时间: 2015-8-20 22:19
不晓得  = =
作者: iamzk    时间: 2015-8-20 22:35
类型自动提升造成的
作者: limaowei666666    时间: 2015-8-20 22:46
数字做运算默认转为int型的,如果 int c=a+b;就对了,或者强转.因为int的类型要比char类型要大,大的类型不能往小的类型里转.    至于 char d =5+6;为什么可以,是因为5+6为11,虽然也是大类型往小类型转,但是已经明确5+6的值是在char的范围之内的.   在编译的时候只运行,不计算.char c=a+b时,a,和b仅仅只是变量,不知道值是多少;   
作者: 代晃    时间: 2015-8-20 22:58
因为a+b相加的时候把a 和b都转成了int类型的。  所以用char接收就会报错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2