• java中的equals方法与"=="运算符解说


    在编程的时候,我们可能经常会用到equals方法,那么这个equals方法和运算符“==”有什么样的区别?

    public class equal {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Cat c1=new Cat(1,2,3);
    		Cat c2=new Cat(1,2,3);
    		System.out.println(c1.equals(c2));
    		System.out.println(c1==c2);
    		
    		String s1=new String("HelloWorld");
    		String s2=new String("HelloWorld");
    		System.out.println(s1.equals(s2));
    		System.out.println(s1==s2);
    
    	}
    
    }
    
    class Cat{
    	int color;
    	int height;
    	int weight;
    	
    	public Cat(int color,int height,int weight){
    		this.color=color;
    		this.height=height;
    		this.weight=weight;
    	}
    }
    

      这是一个很简单的程序,就足以看出两者的区别。程序运行的答案是 false,false,true,false. 为什么?

    1、equals方法是属于Object类的,没有被重写之前,它比较的是两个对象的引用,只有当这两个引用指向的是同一个对象的时候,才是equals的,否则就不是!那么运算符“==”也是这样的原理,比较的是引用。因此前两个答案是false,false.最后一个答案也是false.

    2、为什么第三个答案是true呢?因为sun公司在创造String类的时候,已经将它的equals方法重写了,只要是字符序列相同的两个String对象,它们就是equals的,因此答案三输出了true!

    请大家多多补充指正,共同进步!!!

  • 相关阅读:
    阿里巴巴的26款超神Java开源项目
    10个爬虫工程师必备的工具
    微服务的发现与注册--Eureka
    国内最火5款Java微服务开源项目
    LeetCode 700. 二叉搜索树中的搜索
    LeetCode 104. 二叉树的最大深度
    LeetCode 908. 最小差值 I
    LeetCode 728. 自除数
    LeetCode 704. 二分查找
    LeetCode 852. 山脉数组的峰顶索引 (二分)
  • 原文地址:https://www.cnblogs.com/qiuhaojie/p/5313336.html
Copyright © 2020-2023  润新知