java(一)equals和"=="

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 07:36   50   0
本文章提供于初学者或者复习基础知识的人参考,如有错漏敬请补充!
public static void main(String[] args){
    int a = 33;
    long l = 33L;
    // 当==用于基本数据之间比较的时候(包括String),比较的是两者之间的值。
    System.out.println(a == l);
    Integer integer1 = 33;
    Integer integer2 = 33;
    Integer integer3 = new Integer(33);
    /*
    当 == 用于类之间的比较的时候,比较的两个对象的地址。Integer integer1 = 33 创建的时候系统进行自动装箱实际执行的是
    Integer integer1 = Integer.valueOf(33) 然后参考Integer的源代码,当数值在-128到127之间的时候返回的是缓存的Integer
    对象。
    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
    */
    System.out.println(integer1 == integer2);
    System.out.println(integer2 == integer3);
    /*
    当 == 比较基本数据类型和包装类的时候,包装类会进行自动拆箱操作。
     */
    Long long1 = 33L;
    System.out.println(long1 == a);
    /*
    Object是超类,所有的对象都是继承Object。equals是Object下的方法,比较的是两个对象的地址。对象继承Object重写了
    equals方法进行比较。
    Long的equals方法先是通过 instanceof关键字查看integer1是否为Long的自身类或者子类,然后再比较引用地址是否相同。
    public boolean equals(Object obj) {
        if (obj instanceof Long) {
            return value == ((Long)obj).longValue();
         }
        return false;
     }     
    */
    System.out.println(long1.equals(integer1));
 }
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP