卡卡西的微笑
2018-10-31 15:16
采纳率: 50%
浏览 1.9k
已采纳

Java char类型运算问题

请问为什么
char ch = 'A';
ch += 32;
System.out.println(ch);
能输出结果是a;

            而ch = ch+32;
            却会报错
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 一只蚊子啊 2018-10-31 16:42
    已采纳

    ch += 32 :+= 是java语言规定的运算符,java编译器会对他进行特殊处理,进行了隐式转换,所以可以正确编译。
    ch = ch+32: 运算时会自动提升表达式的类型 结果会是int 在赋予char 所以需要强制转化,也即是ch = (char)(ch+ 32);

    一个简单的记忆方法:
    char 两个字节,
    int 四个字节,
    两者相加取大者。
    所以(ch+32) 这个表达式的类型是 int 类型,
    而你的 ch 是char 类型,把大的数据类型赋值给较小的要强制转换。

    已采纳该答案
    评论
    解决 7 无用
    打赏 举报
  • threenewbee 2018-10-31 15:21

    ch+32是int,转换成char需要一个转换
    ch = (char)(ch+ 32);

    评论
    解决 无用
    打赏 举报
  • qq_33536863 2018-11-01 02:19

    ch+32是int,赋值给char型时要强制转换

    评论
    解决 无用
    打赏 举报
  • Data_Designer 2018-11-01 03:39

    可以查看idea的报错

    评论
    解决 无用
    打赏 举报
  • wukong3366159 2018-11-23 03:05

    ch+32 结果是int类型,int不能直接转char,需要强制转换
    ch = (char)(ch+32);

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题