Java基础复习:Object类中的toSting()和equals()方法

Object类是所有类的公共父类

public boolean equals(Object obj):对象比较

                Integer a = new Integer(2);
		Integer b = new Integer(2);
		//a,b都是和堆里开辟的存放“2”的地址建立引用关系
		System.out.println(a.equals(b));//true
		/**
		 * boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。 
		 * equlas默认的比较的是  堆里地址,和 == 一样,都是比较地址
		 */

很多时候我们并不需要比较地址,而是比较内容,所以我们一般会覆写此方法

		 public boolean equals(Object obj) {
			if (obj instanceof Integer) {
				return this.value == ((Integer)obj).intValue();
			}
			return false;
		}

String toString() 返回该对象的字符串表示

我们打印对象,其实打印的是对象的toString()方法

对象类型的全限定名 + @ + 对象十六进制的hashCode

一般情况下建议每个类都覆写toString()


我们编写一个Student类,并且没有覆写toString方法

package day3;

class Student
{
	private String name;
	private String gener;
	private Integer age;
	
	public Student(String name, String gener, Integer age) {
		super();
		this.name = name;
		this.gener = gener;
		this.age = age;
	}
}
public class Test2 {
	public static void main(String[] args) {
		Student s1 = new Student("Well","male",23);
		System.out.println(s1);//day3.Student@8c436b
	}
}

发现,打印的内容并非我们想要的内容。在这种情况下,我们应该去覆写其隐含父类Object的toString()方法。

package day3;

class Student
{
	private String name;
	private String gender;
	private Integer age;
	
	public Student(String name, String gender, Integer age) {
		super();
		this.name = name;
		this.gender = gender;
		this.age = age;
	}
	
	@Override
	public String toString() {
		String str = "[name="+name+",gender="+gender+",age="+age+"]";
		return str;
	}
}
public class Test2 {
	public static void main(String[] args) {
		Student s1 = new Student("Well","male",23);
		System.out.println(s1);//[name=Well,gender=male,age=23]
	}
}

当覆写完toString方法后,便能按照我们的意愿输出结果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值