Java中==与equals的用法与区别

Java中==与equals的用法与区别

==:

==等于对于基本数据类型和引用类型的作用效果是不同的,如下:

  • 基本类型:比较值是否相同
  • 引用类型:比较是否为同一个引用
        //对于基本类型
        int a = 1;
        int b = 1;
        System.out.println(a==b); //ture
        //对于引用类型
        String s1 = new String("123");
        String s2 = new String("123");
        System.out.println(s1 == s2); //false

代码解读: 对于基本类型(int)比较的是值是否相同,所以输出结果为true。对于引用类型Strings1s2由两次new得来,所指向引用并不相同,所以结果为false。但如果是这样:

 		String s1 = "123";
        String s2 = "123";
        System.out.println(s1 == s2);//true

代码解读:因为String类型较常用,所以官方给出通过=直接赋值的方法,通过这种方式赋值的字符串变量会存储在字符串常量池中,而不会新创建一个引用,所以此时==比较结果是true

equals:

equals方法基本与==作用相同,不过String类型和基本类型的包装类(Integer等)重写了equals方法,把它变成了值比较。有兴趣的同学可以看一下源码:

引用类型默认的equals方法:


	public boolean equals(Object obj) {
	    return (this == obj);
	}

Stringequals方法(被重写):


	public boolean equals(Object anObject) {
	    if (this == anObject) {
	        return true;
	    }
	    if (anObject instanceof String) {
	        String anotherString = (String)anObject;
	        int n = value.length;
	        if (n == anotherString.value.length) {
	            char v1[] = value;
	            char v2[] = anotherString.value;
	            int i = 0;
	            while (n-- != 0) {
	                if (v1[i] != v2[i])
	                    return false;
	                i++;
	            }
	            return true;
	        }
	    }
	    return false;
	}

如果还有疑问的话可以在评论区留言,有时间的话我就会回复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值