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
  • 相关阅读:
    Mysql之锁、事务绝版详解干货!
    SSL基础知识(比较清楚)
    数字证书使用流程指南
    HTTPS与SSL
    IIS 6.0 Web园(Web Garden)
    验证数字可以有千分符可以有0个1个小数点小数点后输入后四舍五入保留两位(写个js验证真费劲)
    线程安全
    利用SSL给IIS加把锁(转)
    弹出div后其它不能操作(小技巧)
    关于反射
  • 原文地址:https://www.cnblogs.com/ryyy/p/14227802.html
Copyright © 2011-2022 走看看