黑马程序员技术交流社区

标题: 一个常量易错题 [打印本页]

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

作者: 执剑人    时间: 2016-3-6 09:49
这个a最后变成什么值了?感觉编译会出错,有没有大神出来解释一下!
作者: miaodian    时间: 2016-3-7 23:38
厉害啊,细心啊
作者: Wacky    时间: 2016-3-7 23:51
本帖最后由 Wacky 于 2016-3-7 23:52 编辑

编译结果是4
我还是不太理解.....又仔细想了一下 懂了
52对应的char就是4

作者: 278008379    时间: 2016-3-8 00:19
当然是字符型了,这个题默认加了强转,打印结果好像是52
作者: 猜猜我是谁    时间: 2016-3-9 20:00
执剑人 发表于 2016-3-6 09:49
这个a最后变成什么值了?感觉编译会出错,有没有大神出来解释一下!

这段运算运行时进行的是ASC2码值的运算,字符‘2’对应的码值为50,50加2得到‘4’的码值,赋值给左边,由于是char格式,所以输出为字符‘4’




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