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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 随心而动 初级黑马   /  2013-10-23 08:36  /  1313 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args)
       
        {
                Integer m=128;
                Integer n=128;
                sop("m==n"+(m==n));
                Integer a=127;
                Integer b=127;
                sop("a==b"+(a==b));//结果是true 因为a和b 指向啦同一个Integer对象
                                   //因为数值在byte范围内容,对于新特性,如果该数值已经存在,则不会再开辟空间。
        }
public static void sop(String str)
        {
                System.out.println(str);
        }
m==n结果false,a==b结果是true.这是为什么?还有就是Integer  m和int m有什么区别?

评分

参与人数 1技术分 +1 收起 理由
狼王 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
哥们加油!
回复 使用道具 举报
第一个问题你已经有答案了啊,就是因为数值在byte范围内容,对于新特性,如果该数值已经存在,则不会再开辟空间。而128不在byte范围。
第二个问题是,Integer m 中是定义个类对象,而int  m  是定义一个变量。
回复 使用道具 举报
int m整形变量,其数值范围-2^31——2^31(2.147483648000000e+009)
回复 使用道具 举报
Integer m 是对象包装类  int只是数据类型而已
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马