JavaSE13

本文介绍了Java中子类对象的实例化过程,包括继承性和构造器调用顺序。同时讲解了Java的JUnit单元测试步骤,如何创建和运行测试。此外,还详细讨论了`java.lang.Object`类的重要方法如equals(), toString(),以及包装类的使用和基本数据类型与字符串之间的转换。" 113364734,10551785,pdfplumber表格生成逻辑解析,"['PDF处理', '表格识别', '数据抽取', 'Python库']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

子类对象实例化的全过程:

①从结果上来看:(继承性)
子类对象继承父类以后,就获取了父类中声明的属性或方法。
创建子类的对象,在堆空间中,就会加载所有父类中声明的属性。

②从过程上来看:
当我们通过子类的构造器创建子类对象时,我们一定会直接或间接的调用其父类的构造器,进而调用父类的父类的构造器,直到调用了java.lang.Object类中空参的构造器为止。正因为加载过所有的父类的结构,所以才可以看到内存中父类的结构,子类对象才可以考虑进行调用。

虽然·创建子类对象时,调用了父类的构造器,但是自始自终就创建过一个对象,即为new的子类对象。

Java中的JUnit单元测试

步骤:
①选中当前工程 - 右键选择:build path - add libraries - JUnit 4 - 下一步
②创建Java类,进行单元测试。此时的Java类要求:① 此类是public的 ②此类提供公共的无参的构造器
③此类中声明单元测试方法。此时的单元测试方法:方法的权限是public,没有返回值,没有形参
④此单元测试方法上需要声明注解:@Test,并在单元测试类中导入:import org.junit.Test;
⑤声明好单元测试方法以后,就可以在方法体内测试相关的代码。
⑥写完代码以后,左键双击单元测试方法名,右键:run as - JUnit Test

说明:
1.如果执行结果没有任何异常:绿条
2.如果执行结果出现异常:红条

java.lang.Object类
1.Object类是所有Java类的根父类
2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类
3.Object类中的功能(属性、方法)就具有通用性。
属性:无
方法:equals() / toString() / getClass() /hashCode() / clone() / finalize()/wait() /notify()/notifyAll()

== 和 equals() 区别:

== :运算符

①可以使用在基本数据类型变量和引用数据类型变量中
②如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
③如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
补充:== 符号使用时,必须保证符号左右两边的变量类型一致。

quals()方法的使用:
①是一个方法,而非运算符
②只能适用于引用数据类型
③Object类中equals()的定义:
public boolean equals(Object obj) {
return (this == obj);
}

说明:Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体

④像String、Date、File、包装类等都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同。
⑤通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,我们就需要对Object类中的equals()进行重写.
重写的原则:比较两个对象的实体内容是否相同.

Object类中toString()的使用:
① 当我们输出一个对象的引用时,实际上就是调用当前对象的toString()

②Object类中toString()的定义:
public String toString() {
return getClass().getName() + “@” + Integer.toHexString(hashCode());
}

③像String、Date、File、包装类等都重写了Object类中的toString()方法。使得在调用对象的toString()时,返回"实体内容"信息

④自定义类也可以重写toString()方法,当调用此方法时,返回对象的"实体内容"

import org.junit.Test;


public class InterviewTest {

	@Test
	public void test1() {
		Object o1 = true ? new Integer(1) : new Double(2.0);
		System.out.println(o1);// 1.0

	}

	@Test
	public void test2() {
		Object o2;
		if (true)
			o2 = new Integer(1);
		else
			o2 = new Double(2.0);
		System.out.println(o2);// 1

	}

	@Test
	public void test3() {
		Integer i = new Integer(1);
		Integer j = new Integer(1);
		System.out.println(i == j);//false
		
		//Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[],
		//保存了从-128~127范围的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在
		//-128~127范围内时,可以直接使用数组中的元素,不用再去new了。目的:提高效率
		
		Integer m = 1;
		Integer n = 1;
		System.out.println(m == n);//true

		Integer x = 128;//相当于new了一个Integer对象
		Integer y = 128;//相当于new了一个Integer对象
		System.out.println(x == y);//false
	}

}

包装类的使用:
基本数据类型包装成包装类的实例:①通过包装类的构造器实现,②自动装箱

获得包装类对象中包装的基本类型变量:①调用包装类的.xxxValue方法,②自动拆箱

字符串转换成基本数据类型:①通过包装类的构造器实现,②通过包装类的parseXxx(String s)方法实现

基本数据类型转换成字符串:①调用字符串的valueOf方法,②通过""符号
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值