个人理解:面试题==、equals的区别

        //基本数据类型的比较
        int num1 = 10;
        int num2 = 10;
        System.out.println(num1 == num2);   //true
        
        //引用数据类型的比较
        String s1 = "chance";
        String s2 = "chance";
        System.out.println(s1 == s2);        //true
        System.out.println(s1.equals(s2));    //true
        
        //String类中==与equals的比较
        String s3 = new String("chance");     
        String s4 = new String("chance");
        System.out.println(s3 == s4);        //false
        System.out.println(s3.equals(s4));    //true
        
        //没有重写类中的==与equals类型的比较  就是没有在父类中重写equals方法的类
        People dashun1 = new People();
        People dashun2 = new People();
        System.out.println(dashun1.equals(dashun2));       //false
        People dashun = dashun2;    
        System.out.println(dashun.equals(dashun2));            //true

根据以上的结果,分析如下

基本数据类型

1、“==”:比较的是两个基本数据类型的值是否相等,equals不能使用基本数据类型

int num1 = 10;
int num2 = 10;
System.out.println(num1 == num2);  //true

//只是单纯的比较两个值,10=10  即使数据类型不一样,也没有关系
int num1 = 10;
float num2 = 10;
system.out.println(num1 == num2);  //true

引用数据类型

String类中两种比较
第一种

        String num1 = "dashun";
		String num2 = "dashun";
		System.out.println(num1 == num2);   //true
		System.out.println(num1.equals(num2));    //true

“==” 在引用数据类型中,比较引用对象是否相等,就是这两个是否都是引用同一个对象

在这里插入图片描述

“equals” 在string类中,因为被继承重写过,用来比较两个字符串实际内容是否相等,就是每一个字符串是否相等。

String的equals的重写:比较其中每一个字节
在这里插入图片描述
第二种

        String num1 = new String("dashun");
		String num2 = new String("dashun");
		//每一次new都会创建一个内存空间
		System.out.println(num1 == num2);   //false
		System.out.println(num1.equals(num2));    //true

在new一个类的时候会自动创建一个对象存放在堆中

“==”还是比较的引用地址,而equals比较的字符串实际内容是否相等

在这里插入图片描述

自己建一个类 比较 重写和不重写equals比较

不重写equals

public class People {
	public String name;
	public int age;
	public int height;
	public String brilliant;  //英俊
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getHeight() {
		return height;
	}
	public void setHeight(int height) {
		this.height = height;
	}
	public String getBrilliant() {
		return brilliant;
	}
	public void setBrilliant(String brilliant) {
		this.brilliant = brilliant;
	}
}
        People dashun1 = new People();   //new第一个对象
		dashun1.setName("dashun");
		dashun1.setAge(21);
		dashun1.setHeight(179);
		dashun1.setBrilliant("帅");   //两个对象设一样值
		
		People dashun2 = new People();   //new第二个对象
		dashun1.setName("dashun");
		dashun1.setAge(21);
		dashun1.setHeight(179);
		dashun1.setBrilliant("帅");  //两个对象设一样值
		
		System.out.println(dashun1 == dashun2);   //false
		System.out.println(dashun1.equals(dashun2));  //false

重写equals

@Override
	public boolean equals(Object obj) {  //在people类中重写
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		People other = (People) obj;
		if (age != other.age)
			return false;
		if (brilliant == null) {
			if (other.brilliant != null)
				return false;
		} else if (!brilliant.equals(other.brilliant))
			return false;
		if (height != other.height)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}

然后在运行后

        People dashun1 = new People();
		dashun1.setName("dashun");
		dashun1.setAge(21);
		dashun1.setHeight(179);
		dashun1.setBrilliant("帅");
		
		People dashun2 = new People();
		dashun2.setName("dashun");
		dashun2.setAge(21);
		dashun2.setHeight(179);
		dashun2.setBrilliant("帅");
		
		System.out.println(dashun1 == dashun2);   //false
		System.out.println(dashun1.equals(dashun2));   //true

赋值一下让“==”成立

        People dashun = dashun2;    //在原先的基础上赋值一波
        System.out.println(dashun == dashun2);    //true
        System.out.println(dashun.equals(dashun2));    //true
        

微信公众号"想要逆袭的小白" 或搜索:DashunSuccess
时不时有高质量文章更新
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值