zoukankan      html  css  js  c++  java
  • Java面试题:==运算符与equals方法的区别

    一: ==运算符

    1. 如果比较的是基本数据类型,则直接比较数值是否相等,返回值为“true or false”
    2. 如果比较的是引用数据类型,则直接比较地址值是否相等,返回值为“true or false”

    二: Object类中的equals()方法:

    1. Object类中的equals方法比较的是引用数据类型,比较的的是地址值是否相等,“返回true or false”
    2. 如果子类有重写了equals方法,例如String类型,则直接比较类中的属性,返回"true or false"

    三:==运算符运用举例:

    public class Comparea {
    	public static void main(String[] args) {
    		int i1=10;
    		int j1=10;
    		System.out.println(i1==j1);//==运算符的比较使用
    		int i=10;
    		char a=10;
    		System.out.println(i==a);//char类型已经转换成了相应的ASCII码值,所以输出true
    		A1 a1=new A1(2,"男");
    		A1 a12=new A1(2,"男");
    	   System.out.println(a1==a12);//==比较的是地址值,与根父类Object一样
    	
    	}
    }
    class A1{
    	 private int age;
    	 private String  name;
    	A1(int age,String name){
    		this.age=age;
    		this.name=name;
    	}
    	
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    true
    true
    false
    

    四:子类重写Object类中的equals()方法运用举例

    public class Comparea {
    	public static void main(String[] args) {
    		A1 a1=new A1(2,"男");
    		A1 a12=new A1(2,"男");
    		System.out.println(a1==a12);//==比较的是地址值,与根父类Object一样
    		System.out.println(a1.equals(a12));//此时的equals方法子类已经重写了,只比较类中的属性
    		
    	}
    }
    class A1{
    	 private int age;
    	 private String  name;
    	A1(int age,String name){
    		this.age=age;
    		this.name=name;
    	}
    	
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	@Override
    	public boolean equals(Object obj) {//向上转型,把子类的对象赋给父类的引用,通过父类的引用调用,子类重写了的父类中的方法
    		if(this==obj) {//this关键字就是表示当前类的对象
    			return true;
    		}
    		if(obj instanceof A1) {//obj instanceof A:关键字的作用就是判断 
    			//obj 是否是A1这个类的对象,或者其子类的对象
    			
    			A1 a1=(A1)obj;//再通过向下转型,去调用A1类中的方法
    			return this.age==a1.age&&this.name.equals(a1.name);
    		}return false;
    	}
    
    false
    true
  • 相关阅读:
    Linux系统中压缩与解压缩
    Linux系统中的信息查找命令
    Paraview处理fluent计算结果
    insert_stream 中的 insert_every报错
    LIGGGHTS出现错误提示ERROR: Volume expectancy too small
    影响CFD计算量的因素分析及在OpenFOAM中的参数调整
    常见物理量的单位在OpenFOAM中的形式
    LIGGGHTS运行命令
    汇编系列10-内存
    汇编系列9-通用寄存器
  • 原文地址:https://www.cnblogs.com/ryyy/p/14227802.html
Copyright © 2011-2022 走看看