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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 公子-醉香 中级黑马   /  2013-12-14 21:31  /  1003 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

4 个回复

倒序浏览
  • //Integer已经重载了equals方法,实现如下:
  •          //         public boolean equals(Object obj) {
  •          //             if (obj instanceof Integer) {
  •          //                     return value == ((Integer)obj).intValue();
  •          //             }
  •          //             return false;
  •          //         }        
  •          //可以看出Integer的equals方法实际是执行内部intValue的比较,所以只要里面存放的值相等,就会返回true


回复 使用道具 举报
public boolean equals(Object obj)比较此对象与指定对象。当且仅当参数不为 null,并且是一个与该对象包含相同 int 值的 Integer 对象时,结果为 true。
覆盖:
类 Object 中的 equals
参数:
obj - 要比较的对象。
返回:
如果对象相同,则返回 true,否则返回 false。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
  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 的值,所以比较不是对象的内存地址而是值
复制代码

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 还记得梦想吗 于 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




评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马