main 函数的形参 args
public static void main(String[] args) {}
- 对于 main 方法的形参
- 形参必须是一个 String 类型的数组
- 形参名一般是 args,但不强制要求。
- 如果参数类型不符合规定,JVM将无法调用该方法,并抛出 NoSuchMethodError 异常。
- String[] args 的目的是让用户通过命令行传参
public class Test {
public static void main(String[] args) {
System.out.println(args[0]);
}
}
# 在命令行中,运行以下命令
$ javac Test.java
$ java Test IAMASTRING
最终终端会输出 IAMASTRING
1. 在 IDEA 中使用该特性
遍历
1. for-each
for each 语句是 JDK5 的新特征,主要用于遍历数组
、集合
。
// collection 可以是数组/实现了 Iterable 接口的集合类
for(dataType variable : collection){
// 使用 item 进行操作
}
// 遍历二维数组
// 初始化一个二维数组
int[][] array = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// row 和 element 都不是关键字,而是自己起的变量名
// array 是一个二维数组,每一项都是一个一维数组(即int[])。
// 每次迭代中,row 变量会依次引用 array 中的每一个一维数组(行)。
for (int[] row : array) { // 外层循环遍历数组的每一行
// 每次迭代中,element 变量会依次引用 row 数组中的每一个整数值。
for (int element : row) { // 内层循环遍历当前行的每个元素
System.out.print(element + " "); // 打印当前元素
}
// 遍历三维数组
for (int[][] matrix : array3D) {
for (int[] row : matrix) {
for (int element : row) {
System.out.print(element + " ");
}
- for-each 不需要事先知道元素个数,有时候能方便代码编写
// 求 数组中的最大元素,如果采用普通 for,代码显然更复杂一些
public static int searchMax ( int[] arr){
int max = arr[0];
for (int num : arr) {
if (num > max) {
max = num;
return max;
}
}
2. Iterator
JUnit 单元测试框架
主要参考如下:https://www.cainiaoya.com/junit/junit-jiaocheng.html
-
单元测试负责对最小的软件设计单元(模块)进行验证
-
JUnit 是一个单元测试框架,但其已经成为单元测试事实上的代名词。
-
单元测试的要点:
- 每个单元测试方法都需要使用 @Test 注解标注。
- 单元测试方法返回值类型必须是 void
- 单元测试方法形参个数必须为 0
- 建议单元测试方法名:testXxx
-
Junit 的常用注解
- @Test:标识一条测试用例
- @lgnore: 忽略一条测试用例
- @Before:每一个测试方法之前运行有该注解的方法。在 JUnit5 中更名为
BeforeEach
- @After:每一个测试方法之后运行有该注解的方法。在 JUnit5 中更名为
AfterEach
- @BefreClass:所有测试开始之前运行有该注解的方法,BeforeClass 注解的方法必须为
静态
的。在 JUnit5 中更名为BeforeAll
- @AfterClass:所有测试结束之后运行有该注解的方法,AfterClass 注解的方法必须为
静态
的。在 JUnit5 中更名为AfterAll
JUnit 常用注解
BeforeAll
- BeforeAll 注解的方法适合做一些全局初始化的工作,例如数据库连接。当执行测试类后,BeforeAll 注解的方法首先执行,且仅执行一次,然后依次执行其他普通测试方法。
- BeforeAll 仅当执行测试类时,才会生效,执行普通测试方法时,不会连带执行 BeforeAll 注解的方法。
- BeforeAll 注解的方法无法单独执行。
public class SampleTestSuite {
@BeforeAll
static void setup() {
System.out.println("Setting up the database...");
}
@Test
void testExample1() {
System.out.println("Running testExample1");
}
@Test
void testExample2() {
System.out.println("Running testExample2");
}
}
- 如果执行整个类,会依次输出三条语句
- 如果执行某个单独的测试方法,那么 @BeforeAll 注解的方法
不会运行
JUnit 断言