Java的相等比较

1、比较代码

public class Test13 {
    public static void main(String[] args) {
        String s1="aa";
        String s2="aa";
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
        System.out.println("------------------------");
        String s3 = new String("bb");
        String s4=new String("bb");
        System.out.println(s3==s4);
        System.out.println(s3.equals(s4));
    }
}

2、结果

true
true
------------------------
false
true

3、分析
(1)==与equals()
是比较地址是否相等,而equals()方法则是比较内容是否相等;
(2)string 的直接赋值和通过new方法
string直接赋值,如果Java string池里已有aa字符串,当再次赋值时,不会再分配内存地址。而new会再次分配一个地址。所以第一个地址相同,而第二个地址不同。
4、Object的
和equals()与String重写的equals()方法

package com.jit.edu.demo09;

public class Test07 {
    public static void main(String[] args) {
        Object o1 = new Object();
        Object o2 = new Object();
        Object o3 = o1;
        System.out.println("o1.hashCode() "+o1.hashCode());
        System.out.println("o2.hashCode() "+o2.hashCode());
        System.out.println("o3.hashCode() "+o3.hashCode());//与o1的hashcode相同
        System.out.println("o1=o2 "+o1==o2);//比较地址
        System.out.println("o1.equals(o2) "+o1.equals(o2));//比较地址
        System.out.println(o1==o3);//比较地址
        System.out.println("o1.equals(o3) "+o1.equals(o3));//比较地址
        //String重写了equals方法,比较内容
        String s1 = "1";
        String s2 = s1;
        String s3 = new String("1");
        System.out.println("s1.hashCode() "+s1.hashCode());
        System.out.println("s2.hashCode() "+s2.hashCode());
        System.out.println("s3.hashCode() "+s3.hashCode());

        System.out.println(s1==s2);//比较地址
        System.out.println("s1.equals(s2) "+s1.equals(s2));//比较内容
        System.out.println("s1==s3 "+s1==s3);//比较地址,地址不同
        System.out.println("s1.equals(s3) "+s1.equals(s3));//比较内容

    }
}

5、结果

o1.hashCode() 1915318863
o2.hashCode() 1283928880
o3.hashCode() 1915318863
false
o1.equals(o2) false
true
o1.equals(o3) true
s1.hashCode() 49
s2.hashCode() 49
s3.hashCode() 49
true
s1.equals(s2) true
false
s1.equals(s3) true

Process finished with exit code 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值