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

Java char类型运算问题

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

            而ch = ch+32;
            却会报错
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • qq_40414738
    一只蚊子啊 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 类型,把大的数据类型赋值给较小的要强制转换。

    点赞 6 评论
  • caozhy

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

    点赞 评论
  • qq_33536863
    qq_33536863 2018-11-01 02:19

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

    点赞 评论
  • weixin_40539952
    Data_Designer 2018-11-01 03:39

    可以查看idea的报错

    点赞 评论
  • wukong3366159
    wukong3366159 2018-11-23 03:05

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

    点赞 评论

相关推荐