zoukankan      html  css  js  c++  java
  • 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!

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

  • 相关阅读:
    js forEach方法
    day1总结
    jupyter notebook
    java_13网络编程
    原生 input radio 优化
    JQ 获取 input file 图片 显示在对应位置
    math.js 使用
    前端优化
    文字动态颜色变化效果
    谷歌,火狐隐藏滚动条
  • 原文地址:https://www.cnblogs.com/qiuhaojie/p/5313336.html
Copyright © 2011-2022 走看看