Java面向对象笔记(五)Object类和包装类的使用
一、java.lang.Object类
- Object类是所有Java类的根父类
- 如果在类的声明中未使用extend关键字指明其父类,则默认父类为java.lang.Object类
- Object类中的功能(属性、方法)就具有通用性
属性:无
方法:equals() / toString() /getClass() / hashCode() / clone() / finalize() / wait() / notify()、notifyAll() - Object类之声明了一个空参构造器
二、== 和 equals() 区别
- == 的使用
- 可以使用在基本数据类型变量和引用数据类型变量中(除boolean类型外)
- 如果比较的是基本数据类型:比较两个变量保存的数据是否相等。(数据类型不一定要相同)
如果比较的是引用数据类型变量:比较两个对象的地址值是否相同。
- equals()的使用
格式:obj1.equals(obj2)
- Object类中equals()的定义:
public boolean equals(Object obj){
return (this == obj)
}
说明:Object类中定义的equals()和的作用和==是相同的:比较两个对象的地址值是否相同
- 像String、Date、File、包装类都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的的地址是否相同,而是比较两个对象的"实体内容"是否相同
- 通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,我们就需要对Object类中的equals()进行重写
三、Object类中toString()的使用:
- 当我们输出一个对象的引用时,实际上就是调用当前对象的toString()
其返回值是String类型,返回类名和它的引用地址。
Date now=new Date();
System.out.println(“now=”+now); 相当于
System.out.println(“now=”+now.toString());
- Object类中toString()的定义:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
- 像String、Date、File、包装类等都重写了Object类中的toString()方法。
使得在调用对象的toString()时,返回"实体内容"信息 - 自定义类也可以重写toString()方法,当调用此方法时,返回对象的"实体内容"
四、包装类的使用
- Java提供了8中基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征
2.掌握:基本数据类型、包装类、String三者之间的相互转换
代码示例:
public class WrapperTest {
//String类型--->基本数据类型、包装类:调用包装类的parseXxx(String s)
@Test
public void test5() {
String str1 = "123";
int num1 = Integer.parseInt(str1);
System.out.println(num1 + 1);
String str2 = "true";
boolean b1 = Boolean.parseBoolean(str2);
System.out.println(b1);
}
//基本数据类型、包装类--->String类型:调用String重载的valueOf(xxx)
@Test
public void test4() {
int num1 = 10;
//方式一、连接运算
String str1 = num1 + "";
//方式二、调用String的valueOf(xxx)
float f1 = 12.3f;
String str2 = String.valueOf(f1);//"12.3"
Double d1 = new Double(12.4);
String str3 = String.valueOf(d1);
System.out.println(str2);
System.out.println(str3);//"12.4"
}
/*
* JDK 5.0新特性:自动装箱与自动拆箱
*/
@Test
public void test3() {
// int numb1 = 10;
// //基本数据类型--->包装类的对象
// method(numb1);
//自动装箱:基本数据类型---->包装类
int num2 = 10;
Integer in1 = num2;//自动装箱
//自动拆箱:包装类--->基本数据类型
System.out.println(in1.toString());
int num3 = in1;//自动拆箱
}
public void method(Object obj) {
}
//包装类--->基本数据类型:调用包装类的xxxValue()
@Test
public void test2() {
Integer in1 = new Integer(12);
int i1 = in1.intValue();
System.out.println(i1 + 1);
}
//基本数据类型---->包装类:调用包装类的构造器
@Test
public void test1() {
int num1 = 10;
// System.out.println(num1.toString());
Integer in1 = new Integer(num1);
System.out.println(in1.toString());//10
Integer in2 = new Integer("123");
System.out.println(in2.toString());//123
//报异常
// Integer in3 = new Integer("123abc");
// System.out.println(in3.toString());
}
}
五、Java中的JUnit单元测试
步骤:
- 选中当前工程 - 右键选择:build path - add libraries - JUnit - 下一步
- 创建Java类,进行单元测试。
此时的Java类要求:① 此类是public的 ②此类提供公共的无参的构造器
@Test
public void test1() {
}
- 此类中声明单元测试方法。
此时的单元测试方法:方法的权限是public,没有返回值,没有形参 - 此单元测试方法上需要声明注解:@Test,并在单元测试类中导入:import org.junit.Test;
- 声明好单元测试方法以后,就可以在方法体内测试相关的代码。
- 写完代码以后,左键双击单元测试方法名,右键:run as - JUnit Test
说明:
1.如果执行结果没有任何异常:绿条
2.如果执行结果出现异常:红条