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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 288555 中级黑马   /  2016-3-6 09:02  /  744 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

char a = 2 + '2';
System.out.println(a);
这个是考的常量优化,所以这个代码编译是能通过的,很容易做错
* A:什么是常量
    * 在程序执行的过程中其值不可以发生改变
* B:Java中常量的分类
    * 字面值常量
    * 自定义常量(面向对象部分讲)
* C:字面值常量的分类
    * 字符串常量    用双引号括起来的内容
    * 整数常量        所有整数
    * 小数常量        所有小数
    * 字符常量        用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
    * 布尔常量        较为特殊,只有true和false
    * 空常量            null(数组部分讲解)

5 个回复

倒序浏览
这个a最后变成什么值了?感觉编译会出错,有没有大神出来解释一下!
回复 使用道具 举报
厉害啊,细心啊
回复 使用道具 举报
本帖最后由 Wacky 于 2016-3-7 23:52 编辑

编译结果是4
我还是不太理解.....又仔细想了一下 懂了
52对应的char就是4
回复 使用道具 举报
当然是字符型了,这个题默认加了强转,打印结果好像是52
回复 使用道具 举报
执剑人 发表于 2016-3-6 09:49
这个a最后变成什么值了?感觉编译会出错,有没有大神出来解释一下!

这段运算运行时进行的是ASC2码值的运算,字符‘2’对应的码值为50,50加2得到‘4’的码值,赋值给左边,由于是char格式,所以输出为字符‘4’
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马