System是一个常见的工具类,提供了一些与系统相关的方法
exit
正常退出程序:程序执行完毕并退出
public class Main {
public static void main(String[] args) {
// 程序逻辑...
System.out.println("程序执行完毕,准备退出。");
System.exit(0);
}
}
异常退出程序:程序遇到无法处理的错误和异常时使用
public class Main {
public static void main(String[] args) {
try {
// 程序逻辑,可能抛出异常...
} catch (Exception e) {
System.err.println("发生错误:" + e.getMessage());
System.exit(1); // 使用非零状态码表示异常退出
}
}
}
currentTimeMillis
测试代码的执行时间
long startTime = System.currentTimeMillis();
// 执行一些代码...
long endTime = System.currentTimeMillis();
long elapsedTime = endTime - startTime; // 耗时,单位:毫秒
System.out.println("代码执行耗时:" + elapsedTime + " 毫秒");
当测试需要决定两段功能相同的代码时可与通过currentTimeMillis方法来测试出来哪种方法执行时间段。
currentTimeMillis方法获得的时间是时间原点到现在一共多少毫秒,所以方法最终出来的单位是毫秒。(时间原点指的是c语言诞生的日子1970.1.1)
因为currentTimeMillis方法获得时间的唯一行,它还可以应用于唯一标识
arraycopy
System.arraycopy()
是 Java 中的一个静态方法,用于将一个源数组的一部分复制到目标数组。它在许多系统级或应用级任务中都非常有用,因为它提供了数组复制的高效方式,而无需手动编写循环来进行复制。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src
:源数组,即从中复制数据的数组。srcPos
:源数组中的起始位置,从此位置开始复制。dest
:目标数组,即将数据复制到的数组。destPos
:目标数组中的起始位置,从此位置开始粘贴数据。length
:要复制的数组元素的数量。
数组初始化
在创建数组并初始化其一部分值时,System.arraycopy()
可以避免手动循环赋值。
int[] srcArray = {1, 2, 3, 4, 5};
int[] destArray = new int[5];
System.arraycopy(srcArray, 0, destArray, 0, 3); // 复制前三个元素
// 此时 destArray 为 {1, 2, 3, 0, 0}
数组切片
如果你想创建一个原始数组的子集(即切片),可以使用 System.arraycopy()
。
int[] originalArray = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] slicedArray = new int[5];
System.arraycopy(originalArray, 2, slicedArray, 0, 5); // 从索引2开始复制5个元素
// 此时 slicedArray 为 {3, 4, 5, 6, 7}
数组元素替换
如果你想替换数组中的一部分元素,可以先复制旧元素到新位置,然后将新元素复制到原位置。
int[] array = {1, 2, 3, 4, 5};
int[] newElements = {6, 7, 8};
System.arraycopy(array, 3, array, 0, array.length - 3); // 将原数组中的后两个元素移到前面
// 此时 array 为 {4, 5, 4, 5, 0}
System.arraycopy(newElements, 0, array, 2, newElements.length); // 在新位置插入新元素
// 此时 array 为 {4, 5, 6, 7, 8}