Integer cc=1;
Integer dd=1;
System.out.println(cc==dd); //true
System.out.println(cc.equals(dd)); Integer aa=new Integer(1);
Integer bb=new Integer(1);
System.out.println(aa==bb); //false
System.out.println(aa.equals(bb)); //true
Integer dd=1;
System.out.println(cc==dd); //true
System.out.println(cc.equals(dd)); Integer aa=new Integer(1);
Integer bb=new Integer(1);
System.out.println(aa==bb); //false
System.out.println(aa.equals(bb)); //true
解决方案 »
- 如何实现肉眼可以看到textField的内容在变化?
- 求一个可以处理3或4维的kmeans算法,java版的,分类3类以上
- String 问题
- 怎么获取JPasswordField 里的字符串 getText可以吗?
- ClassLoader为何使用委派模型?
- 字符串相关算法题。求最优算法。
- 关于继承方面的问题困扰了我好久,好久,请高手帮助指点指点,谢谢谢谢!
- 怎样让textarea内被选中的字符变蓝?
- 没看懂的函数功能!大家帮忙看看
- 比较两个Date 差几个月?
- 求助Cassandra.Client client = new Cassandra.Client(proto);这句中的Cassandra.Client
- 在java文件中定义八进制和二进制值,在线等
Integer dd=1;
System.out.println(cc==dd); //true 比较的是地址
System.out.println(cc.equals(dd)); 比较的是内容 Integer aa=new Integer(1);
Integer bb=new Integer(1);
System.out.println(aa==bb); //false 比较的是地址
System.out.println(aa.equals(bb)); //true 比较的是内容
aa指向 一块内存地址 放置new Integer(1)这个Integer实例,该实例存在一个指向 1这个常量地址的引用。
bb指向 一块内存地址 放置new Integer(1)这个Integer实例,该实例存在一个指向 1这个常量地址的引用。
由于是new出来的,说 上面两个Integer实例内存地址不一样,就是aa,和bb指向的地址不一样
所以为false
而equals是比较 内容的,可以说最后1那个常量地址的比较。因为一个常量可以认为在内存中只有一块地址,所以equals相等。
Integer cc=1;
Integer dd=1;
这句
cc的内存地址含有1这个常量的地址。也就是cc指向 1常量的内存地址
dd的内存地址含有1这个常量的地址。也就是cc指向 1常量的内存地址
== 是比较内存地址的引用是不是一样的。
结果都是指向1这个个常量的,
所以==为true。