黑马程序员技术交流社区

标题: 关于运算符的问题 [打印本页]

作者: 吴刚    时间: 2012-11-10 15:05
标题: 关于运算符的问题
本帖最后由 吴刚 于 2012-11-10 23:41 编辑
  1. public static void main(String[] args) {
  2. char c = 'A';
  3.                 char b = 1;
  4.                 char d = c+b;//错滴
  5.                 int e = c+1;//错滴
  6.                 int f = (int)c+1;//错滴
  7.         }
复制代码
知道改成char d = (char)c+b;就正确了,难道char和char进行运算也要进行强制类型转换?如果java内部进行强制类型转换的话,那么int e咋也错了,还有int f的运算,强转int类型也不行?谢谢热心人解答啦。。

作者: 葛旭东    时间: 2012-11-10 15:33
本帖最后由 葛旭东 于 2012-11-10 15:55 编辑

char d = c+b;是错的,两个char相加,类型自动提升为int,应该改成 char d = (char)(c+b)或者int d = c+b;

后面两个是正确的啊。
作者: 李长波    时间: 2012-11-10 15:50
c+b这个是算术运算符!算术运算符都是基于数据的运算,可以是浮点型,可以是整型,但不能用字符型想加!改成int   d=(int)(c+b)就没错!其他的三个都没错!强制转化了!
作者: 葛旭东    时间: 2012-11-10 15:59
李长波 发表于 2012-11-10 15:50
c+b这个是算术运算符!算术运算符都是基于数据的运算,可以是浮点型,可以是整型,但不能用字符型想加!改 ...

int d = c+b就可以了,不必强转成int型
作者: 吴刚    时间: 2012-11-10 23:41
谢谢楼上几位,知道缘由了,是变量名定义重复啦。。。




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