Java面向对象笔记(五)Object类和包装类的使用

一、java.lang.Object类

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

二、== 和 equals() 区别

  • == 的使用
  1. 可以使用在基本数据类型变量和引用数据类型变量中(除boolean类型外)
  2. 如果比较的是基本数据类型:比较两个变量保存的数据是否相等。(数据类型不一定要相同)
    如果比较的是引用数据类型变量:比较两个对象的地址值是否相同。
  • equals()的使用

格式:obj1.equals(obj2)

  1. Object类中equals()的定义:
public boolean equals(Object obj){
 		return (this == obj)
 }
 
 说明:Object类中定义的equals()和的作用和==是相同的:比较两个对象的地址值是否相同
  1. 像String、Date、File、包装类都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的的地址是否相同,而是比较两个对象的"实体内容"是否相同
  2. 通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,我们就需要对Object类中的equals()进行重写

三、Object类中toString()的使用:

  1. 当我们输出一个对象的引用时,实际上就是调用当前对象的toString()
    其返回值是String类型,返回类名和它的引用地址。
Date now=new Date();
 System.out.println(“now=”+now); 相当于
 System.out.println(“now=”+now.toString());
  1. Object类中toString()的定义:
public String toString() {
     return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
  1. 像String、Date、File、包装类等都重写了Object类中的toString()方法。
    使得在调用对象的toString()时,返回"实体内容"信息
  2. 自定义类也可以重写toString()方法,当调用此方法时,返回对象的"实体内容"

四、包装类的使用

  1. 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单元测试

步骤:

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

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