Java_Object类

12 篇文章 2 订阅

Object类:

         在Java中所有的类都有一个公共的父类就是Object类,一个类只要没有明显的继承一个类,则肯定是Object类的子类。

 

Object类中的主要方法:

         public  Object() 构造方法

         publicboolean equals(Object obj)  对象比较

         publicint hashCode()  取得Hash码

         publicString toString() 对象打印时调用

<pre name="code" class="java"><pre name="code" class="java">public class Test {//继承了Object类

}

public class ObjectDemo1 {
	public static void main(String[] args) {
		Test d= new Test();//实例化Demo对象
		System.out.println("不加toString()输出:"+d);
		System.out.println("加toString()输出"+d.toString());
	}
}


 

 


以上代码结果说明:加不加toString()功能都是一样的,证明了对象在打印的时候一定会调用toString()方法,是默认调用的。

<pre name="code" class="java">public class Person {
	private String name;// 定义name属性

	private int age;// 定义age属性

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

	}

	public String toString() {
		return "姓名:" + this.name + ":年龄:" + this.age;
	}

}
public class ObjectDemo2 {
	public static void main(String[] args) {
		Person p = new Person("丫蛋",22);
		System.out.println(p);
	}
}


 
 

equals方法:

1.      equals()方法的主要功能是进行对象的比较操作

2.      String本身也是Object类的子类,所以已经覆写了此方法

<pre name="code" class="java">public class Person {
	private String name;// 定义name属性

	private int age;// 定义age属性

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

	}

	// 重写equals方法
	public boolean equals(Object obj) {
		if (this == obj) {// 地址相等
			return true; // 表示为同一个对象
		}

		if (!(obj instanceof Person)) {// 不是Person对象
			return false;
		}
		Person p = (Person) obj;// 向下转型
		if (p.name.equals(this.name) && p.age == this.age) {
			return true;// 依次比较内容
		} else {
			return false;
		}

	}

}

 
 
<pre name="code" class="java">public class ObjectDemo3 {
	public static void main(String[] args) {
		Person p1 = new Person("丫蛋", 18);
		Person p2 = new Person("丫蛋", 22);
		System.out.println(p1.equals(p2)?"是同一个人":"不是同一个人");
		
		System.out.println(p1.equals("hello")?"是同一个人":"不是同一个人");
	}
}

 
 

Object类是所有类的父类,所有类的对象都可以使用Object接收,Object类不光可以接收对象,还可以接收任意的引用数据类型(类、接口、数组)

 

使用Object接收接口实例:

<pre name="code" class="java">public interface A {
	public String getInfo();
	
}


 
 
<pre name="code" class="java">public class B implements A{

	@Override
	public String getInfo() {//重写接口中的抽象方法
		return "丫蛋";
	}
	
}

 
 
<pre name="code" class="java">public class ObjectDemo4 {
	public static void main(String[] args) {
		A a = new B();//向上转型,为接口实例化
		Object obj  = a ;//使用Object接收,向上转型
		A x = (A) obj;//向下转型
		System.out.println(x.getInfo());
	}
}

 
 

使用Object接收数组实例:

<pre name="code" class="java">public class ObjectDemo5 {
	public static void main(String[] args) {
		int temp[] = { 1, 3, 5, 7, 9 };// 定义数组
		Object obj = temp;// 用Object接收数组
		//打印数组
		print(obj);

	}

	public static void print(Object o) {
		if (o instanceof int[]) {// 判断数组是否为整型数组
			int x[] = (int[]) o;
			for (int i = 0; i < x.length; i++) {
				System.out.println(x[i]);
			}

		}
	}
}

 
 

总结:

1.      Object类是所有类的父类,只要是引用数据类型都可以使用Object进行接收

2.      对象在进行向下转型之前一定要先发生向上转型,要使用instanceof关键字进行判断

3.      toString():对象打印时调用

4.      equals():对象在比较时调用

5.      String类也是Object类的子类



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值