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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴刚 中级黑马   /  2012-11-10 15:05  /  1474 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴刚 于 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类型也不行?谢谢热心人解答啦。。

点评

char d = (char)c+b 因为运算有个自动提升的,其他的你确定也是错的  发表于 2012-11-10 15:25

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 葛旭东 于 2012-11-10 15:55 编辑

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

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

int d = c+b就可以了,不必强转成int型
回复 使用道具 举报
谢谢楼上几位,知道缘由了,是变量名定义重复啦。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马