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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 52java 中级黑马   /  2016-9-2 23:00  /  1314 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java中有常量优化机制:
                针对于String类型来讲:
                        如果是常量相加,会直接运算,然后比较结果(比较的是在常量池中的值),
                        如果是变量相加,会开辟新空间,然后再比较(比较的是地址值)
                针对于byte类型来讲:
                        如果是在byte范围内的变量比较,比较的是值。
                        如果超出byte范围了,比较的就是地址值。
                        示例:
                                Integer aa = 128;
                                Integer bb = 128;
                                System.out.println(aa==bb); //false  比较的是 地址值

                                Integer aa = 127;
                                Integer bb = 127;
                                System.out.println(aa==bb); //true  比较的是 值

2 个回复

正序浏览
如果是在byte范围内的变量比较,比较的是值。如果超出byte范围了,比较的就是地址值。为什么啊?说得不明不白的?
回复 使用道具 举报
强大无比的厉害!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马