黑马程序员技术交流社区

标题: Integer的问题 [打印本页]

作者: 公子-醉香    时间: 2013-12-14 21:31
标题: Integer的问题
  1. public class IntegerDemo1 {
  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 Integer x= new Integer("123");
  5.                 Integer y=new Integer(123);
  6.                 sop("x==y"+(x==y));
  7.                 sop("x.equqls(y)"+x.equals(y));//在这里返回值为什么是true呢?
  8.         }
  9.         public static void sop(String str){
  10.                 System.out.println(str);
  11.         }
  12. }
复制代码


作者: 回音    时间: 2013-12-14 21:43



作者: 冬天的热带鱼    时间: 2013-12-14 22:24
public boolean equals(Object obj)比较此对象与指定对象。当且仅当参数不为 null,并且是一个与该对象包含相同 int 值的 Integer 对象时,结果为 true。
覆盖:
类 Object 中的 equals
参数:
obj - 要比较的对象。
返回:
如果对象相同,则返回 true,否则返回 false。

作者: 末末    时间: 2013-12-14 23:12
  1. public boolean equals(Object obj) {
  2.         if (obj instanceof Integer) {
  3.             return value == ((Integer)obj).intValue();
  4.         }
  5.         return false;
  6.     }这段代码是Integer覆写Object 类的,
  7. intValue()是指 以 int 类型返回该 Integer 的值,所以比较不是对象的内存地址而是值
复制代码

作者: 还记得梦想吗    时间: 2013-12-15 03:09
本帖最后由 还记得梦想吗 于 2013-12-15 03:10 编辑

Integer("123"); 转化后 返回结果就是 int类型的数据 123  两者值相同 用equals 方法 比较其值是否相同 是    相同的  自然返回true用 == 比较  那么他们是不同的对象 在内存里面地址 不相同  所以 返回false  

package com;
public class IntegerDemo1 {
    public static void main(String[] args) {
            // TODO Auto-generated method stub
            Integer x= new Integer("123");
            Integer y=new Integer(123);
            Integer y1=new Integer(123);

            sop("x==y..."+(x==y));
            sop("y==y1.."+(y==y1));
            sop("x.equqls(y)...."+x.equals(y));
            sop("y.equqls(y1)..."+y.equals(y1));


            int num=Integer.valueOf("123");

            System.out.println("num*2........."+num*2);            
            System.out.println("x*2........."+x*2);
            System.out.println("y*2........."+y*2);
    }
    public static void sop(String str){
            System.out.println(str);
    }
}




//运行结果

x==yfalse
y==y1..false  // y和y1都是相同 类型 但是由于是不同对象 内存地址不同 所以 == 下 依然是false
x.equqls(y)true
y.equqls(y1)true   
num*2.........246
x*2.........246   // 说明 字符串“123” 已经转化为 整数类型 并且可以运算了
y*2.........246









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