java基础:面向对象编程(中)5-equals方法.

equals方法:
     
    一  Object中的equals方法:
           public boolean equals(Object obj) {
               return (this == obj);
          }
          
    二 像String,Date等核心类库基本上都重写了equals方法,用来比较内容。
         
    
    三 自定义类如果没重写equals方法那么调用的是Object中的equals方法用来比较内容。
                  但是我们自定义类的时候通常都会重写equals方法,用来比较内容.
          
          
   
    [面试题] == 和 equals的区别是什么?
        == :
            基本数据类型,比较的是具体的内容是否相等。
            引用数据类型,比较的是地址值是否相等。(两个变量指向的是否是同一个对象)
        equals : 
            如果没重写Object中的方法比的是地址值
             如果重写了equals方法那么通常比较的是内容

package com.atguigu.java3;

public class Person {
	String name;
	int age;
	
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	
	public void info() {
		System.out.println("name=" + name+ "age=" + age ); 
	}
	
	//重写 equals()
	@Override
	public boolean equals(Object obj) {
		if(this == obj){//如果 是同一个对象内容就一定相同
			return true;
		}
		if (obj instanceof Person){
			//向下转型
			Person p = (Person) obj;
			//比较内容
			return (p.age == this.age) && this.name.equals(p.name);
		}
		return false;
	}
	
}



package com.atguigu.java3;

import java.io.ObjectOutputStream.PutField;

/*
 * equals方法
 * 
 */
public class EqualsTest {
	public static void main(String[] args) {
		 Person person = new Person("aa", 18);
		boolean equals = person.equals(person);
		System.out.println(equals);
		
		System.out.println("------------------");
		System.out.println(3 == 5); //false
		System.out.println(3.0 == 3);//true自动类型提升
		System.out.println('A' == 65);//true自动类型提升
		
		Person p = person;
		System.out.println(p == person);//true
		
	    p = new Person("cc", 20);
	    System.out.println(p == person); //false
		
		String s1 = new String("abc");
		String s2 = new String("abc");
		System.out.println(s1.equals(s2));//true
	
		
		Person p1 = new Person("cc", 22);
		Person p2 = new Person("cc", 22);
		System.out.println(p1.equals(p2)); //true
		 
	}
}

 自动重写equals的快捷键

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值