有关Object类种种

Object类是所有Java类的顶层类,所有的类都默认继承了Object类,所以,所有类也都可以使用Object类中的一些方法。下面介绍Object类的一些常用的方法。

equals方法

public boolean equals(Object obj) 用于比较一个类的两个对象是否是同一个内容,与"=="不同的支出在于"=="比较的是两个对象是否引用的同一个对象,而equals方法是比较两个对象的内容是否一致。

package com.cc.demo;

public class ObjectDemo {

	public static void main(String[] args) {
		//新建两个内容相同,但是地址不同的String对象
		String str1 = new String("Hello World");
		String str2 = new String("Hello World");
		//两个String引用,引用了同一个对象
		String str3 = "Hello World";
		String str4 = "Hello World";
		
		//使用两种方法比较两个内容相同,地址不同的String对象
		System.out.println("内容相同,地址不同,使用==的结果是"+(str1==str2));
		System.out.println("内容相同,地址不同,使用equals方法的结果是"+str1.equals(str2));
		
		//使用两个方法比较两个应用相同的String对象
		System.out.println("内容相同,地址不同,使用==的结果是"+(str3==str4));
		System.out.println("内容相同,地址不同,使用equals方法的结果是"+str3.equals(str4));
		
	}
}

打印结果是:


toString方法

public String toString()方法:Object对象调用该方法返回一个能代表当前对象本身的String类型,但默认的toString方法返回的数据在使用上没有太大意义,一般Object的子类都会重写该方法,用来返回更有价值的,简单易懂的字符串。

package com.cc.demo;

import java.util.Date;

class Report{
	
	private String title;
	private String content;
	private Date date;
	
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	@Override
	public String toString() {
		return "Report [title=" + title + ", content=" + content + ", date="
				+ date + "]";
	}
	
}
public class ObjectDemo {

	public static void main(String[] args) {
		//新建一个Report对象,并赋值
		Report report = new Report();
		report.setTitle("我在写代码");
		report.setContent("我写的代码都不怎么样啊,需要提高的太多了");
		report.setDate(new Date());
		//使用该类的toString方法
		System.out.println(report.toString());
		
	}
}

打印结果如图:


getClass方法

public final Class getClass(),对象调用该方法返回Class类型的运行类,java虚拟机在装在一个对象,都会产生一个Class对象,该对象包含了所装载类的元信息,,如类的名字、属性、方法、构造函数和父类等。

package com.cc.demo;

import java.lang.reflect.Method;
import java.util.Date;

class Report{
	
	private String title;
	private String content;
	private Date date;
	
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	@Override
	public String toString() {
		return "Report [title=" + title + ", content=" + content + ", date="
				+ date + "]";
	}
	
}
public class ObjectDemo {

	public static void main(String[] args) {
		//新建一个Report对象,并赋值
		Report report = new Report();
		report.setTitle("我在写代码");
		report.setContent("我写的代码都不怎么样啊,需要提高的太多了");
		report.setDate(new Date());
		//返回该对象所属类的信息
		System.out.println("该对象的类型是:"+report.getClass());
		//返回包名
		System.out.println("该类的包名是:"+report.getClass().getPackage());
		//返回方法
		Method[] methods = report.getClass().getDeclaredMethods();
		for(Method method:methods){
			System.out.println("该类的方法有:"+method.toString());
		}
	}
}

打印方法如下,有关该方法更多解释,请查看有关java反射机制的知识



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值