Dawn's Blogs

分享技术 记录成长

0%

Java基础 (6) 单元测试方法和包装类

单元测试方法

Java 中的 JUnit 单元测试,步骤:

  • 创建 Java 类,进行单元测试。这个类要求:
    • 此类是 public 的。
    • 此类提供公共的无参数构造器。
  • 此类中声明单元测试方法。单元测试方法要求:
    • 方法的权限是 public。
    • 没有返回值、没有形参。
  • 单元测试方法上需要声明注解 @Test,并 import org.junit.Test;
1
2
3
4
5
6
7
8
9
10
import org.junit.Test;

public class JUnitTest {

@Test
public void testXXX() {
// 单元测试流程
// ....
}
}

包装类

针对八种基本数据类型定义相应的引用类型,即包装类(封装类)。有了类的特点,就可以调用类中的方法,Java 才是真正的面向对象。

image-20230127105607994

装箱和拆箱

装箱

基本数据类型包装成包装类:装箱

  • 通过包装类的构造器实现。
1
2
int i = 500;
Integer t = new Integer(i);
  • 通过字符串参数构造包装类对象。
    • 注意若参数不能解析,抛出 NumberFormatException 异常(除了布尔类型外)。
1
2
Float f = new Float("3.14159");
Long l = new Long("abc"); // NumberFormatException

拆箱

获得包装类对象中包装的基本类型变量:拆箱

  • 调用包装类的 .xxxValue() 方法:
1
boolean b = boolObj.booleanValue();

JDK 1.5 之后,支持自动装箱、自动拆箱。但是类型必须匹配

1
2
3
4
5
6
// 自动装箱
int num = 10;
Integer numObj = num;

// 自动拆箱
int num2 = numObj;

基本数据类型、包装类与 String 的转换

  • 基本数据类型与包装类之间:
    • 基本数据类型到包装类:装箱
      • 通过构造器Integer t = new Integer(8)
      • 通过字符串参数Float f = new Float("3.1415")
      • 自动装箱
    • 包装类到基本数据类型:拆箱
      • 调用包装类方法 xxxValueboolean b = boolObj.booleanValue()
      • 自动拆箱
  • 基本数据类型与 String 类之间:
    • 基本数据类型到 String 类:
      • String 类的 valueOf 方法String s = String.valueOf(1.123f)
      • 直接与空字符串拼接String s = 6 + ""
    • String 类到基本数据类型:
      • 调用相应包装类的 parseXxx 静态方法int num = Integer.parseInt("10")
      • 通过包装类构造器boolean b = new Boolean("true")
  • 包装类与 String 类之间:
    • 包装类到 String 类:
      • 包装类对象的 toString 方法
      • 调用包装类的 toString(形参) 方法
    • String 类到包装类:
      • 通过字符串参数的装箱Float f = new Float("3.1415")

image-20230127112424733

1
2
3
4
5
6
7
Integer m = 1;
Integer n = 1;
System.out.println(m == n); // true

Integer x = 128;
Integer y = 1128;
System.out.println(x == y); // false

Integer 内部定义了 IntegerCache 静态常量池,IntegerCache 中定义了 Integer[] 保存了从 -128 到 127 范围内的整数。如果使用自动装箱的方式,给 Integer 赋值的范围在 -128 到 127 时,可以直接使用 IntegerCache 中的元素,不用再 new 了(为了提高效率)。