每日学习-Java基础(十)接口和继承7(Object类)

一、终极父类Object
1、大boss

// Object类
// 所有类的父类
// 声明类时,默认继承Object

// 今日主题--》Object类的方法
// 对象.的方式可以看到

在这里插入图片描述
2、方法
(1)toString()

package ia7_object_toString;

public class Hero extends Object{
	protected String name; // 英雄名称
	protected float hp; // 血量
	protected int armor;
	protected float moveSpeed;
	
	public static void main(String[] args) {
		Hero h = new Hero();
		// toString() 获取当前对象的字符串表达
		System.out.println(h.toString());
		// 直接打印对象就是打印toString字符串返回值
		System.out.println(h);
	}
}

// 试一试,输出结果一样!

(2)finalize()

package ia7_object1_finalize;

public class Hero extends Object{
	protected String name; // 英雄名称
	protected float hp; // 血量
	protected int armor;
	protected float moveSpeed;
	
	public static void main(String[] args) {
		Hero h = new Hero();
		
		for(int i=0; i<100000; i++)
		{
			// finalize()
			// 垃圾回收机制
			// 不需开发人员调用,jvm(java虚拟机自动)
			// 当垃圾足够多时,jvm将调用finalize()方法进行垃圾回收
			// 当一个对象没有任何一个引用指向时,它就成为了垃圾,满足垃圾回收条件
			// 每创建一个对象,前一个对象就失去了引用,变成了垃圾
			// 1000/10000都没有效果,垃圾必须足够多时
			h = new Hero();
		}
	}
}

// 虽然没有输出,但确实进行了垃圾回收,练习处我们再看是否真的进行了垃圾回收。

(3)equals()

package ia7_object2_equals;

public class Hero extends Object {
	protected String name; // 英雄名称
	protected float hp; // 血量
	protected int armor;
	protected float moveSpeed;

	public static void main(String[] args) {
		Hero h = new Hero();
		Hero h1 = new Hero();

		// equals() 判断两个对象是否相同
		// 2个对象的内容是否相同
		// h h1 指向不同的两个对象
		System.out.println(h.equals(h1));
		h1 = h;
		// h h1 指向同一对象
		System.out.println(h.equals(h1));
	}
}

运行结果:
在这里插入图片描述
拓展: “==”
// 也可以判断2个对象是否相同

package ia7_object3_equi;

public class Hero extends Object{
	protected String name; // 英雄名称
	protected float hp; // 血量
	protected int armor;
	protected float moveSpeed;
	
	public static void main(String[] args) {
		Hero h = new Hero();
		Hero h2 = new Hero();
		// == 2个对象是否指向同一对象
		System.out.println(h == h2); // false
		h2 = h;
		System.out.println(h == h2); // true
	}
}

// 二者区别

// equals() 与  “==” 判断两个对象是否相同有什么区别
// ==
// 1-基本数据类型 判断值是否相等
// 2-非基本数据类型(引用类型) 判断是否指向同一对象,指向对象的内存地址是否相同,
// equals()
// 1-只能用于非基本数据类型,判断引用是否指向同一对象(如未进行重写)
// 更详细的内容见链接

https://www.cnblogs.com/dolphin0520/p/3592500.html

(4)其他

高级内容,以后深入。
// hashCode() 哈希值的意义 hashCode原理

// Object还提供线程同步相关方法  线程交互
// wait()
// notify()
// notifyAll()

// getClass() 类对象 反射机制

二、练习
重写Item的 toString(), finalize()和equals()方法
toString() 返回Item的name + price
finalize() 输出当前对象正在被回收
equals(Object o) 首先判断o是否是Item类型,然后比较两个Item的price是否相同

package ia7_object4_practice;

public class Item extends Object {
	protected String name;
	protected float price;

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return (name + price);
	}

	@Override
	protected void finalize() throws Throwable {
		// TODO Auto-generated method stub
		System.out.println("该对象正在被回收(垃圾车拖走)!");
	}

	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		if (obj instanceof Item) {
			Item it = (Item) obj;
			return this.price == it.price;
		}
		return false;
	}

	public static void main(String[] args) {
		Item item = new Item();
		item.name = "物品";
		item.price = 100000000;

		System.out.println(item.toString());

		for (int i = 0; i < 100000; i++) {
			Item item1 = new Item();
		}

		LifePotion lp = new LifePotion();
		lp.price = 10000000;
		System.out.println(item.equals(lp));

		lp.price = 100000000;
		System.out.println(item.equals(lp));
	}
}

运行结果:收工!
在这里插入图片描述
我的学习源泉:https://how2j.cn/k/interface-inheritance/interface-inheritance-object/312.html?p=114999
Java自学网站:https://how2j.cn?p=114999

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值