System类包含几个有用的类字段和方法。 它不能被实例化。
System类提供的System包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 一种加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。
static void |
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 将指定源数组中的数组从指定位置复制到目标数组的指定位置。 |
static long |
currentTimeMillis() 返回当前时间(以毫秒为单位)。 |
static void |
exit(int status) 终止当前运行的Java虚拟机。 |
static void |
gc() 运行垃圾回收器。 |
static Properties |
getProperties() 确定当前的系统属性。 |
static String |
getProperty(String key) 获取指定键指示的系统属性。 |
1、arraycopy 数组复制方法
参数
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目的地数据中的起始位置。
length - 要复制的数组元素的数量。
public static void main(String[] args) {
int[] src = {1,2,3,4,5,6,7,8,9,10};
int[] dest = new int[10];
System.arraycopy(src, 3, dest,5,4);
for (int i : dest) {
System.out.print(dest[i] + "-"); //0-0-0-0-0-0-4-5-6-0-
}
}
2、currentTimeMillis:获取系统当前毫秒值
public static void main(String[] args) {
long start = System.currentTimeMillis();
int[] src = {1,2,3,4,5,6,7,8,9,10};
int[] dest = new int[10];
System.arraycopy(src, 3, dest,5,4);
for (int i : dest) {
System.out.print(dest[i] + "-"); //0-0-0-0-0-0-4-5-6-0-
}
long end = System.currentTimeMillis();
System.out.println("程序运行时间为毫秒:"+(end-start)); //1
}
3、exit:终止当前运行的Java虚拟机
该参数作为状态代码; 按照惯例,非零状态码表示异常终止。
int[] src = {1,2,3,4,5,6,7,8,9,10};
int[] dest = new int[10];
System.exit(0);
4、gc:运行垃圾回收器。加深理解参考文章:浅谈Java的System.gc()实现
用来运行JVM中的垃圾回收器,完成内存中垃圾的清除。
调用 System.gc() 方法,不一定能自动调用finalize()方法进行垃圾回收。
public class HelloWorld {
//清除垃圾时,会默认调用被清空对象的finalize方法。
@Override
public void finalize() throws Throwable {
System.out.println("垃圾来回收了");
}
public static void main(String[] args) {
new HelloWorld();
System.gc();
}
}
5、getProperties() getProperty(String key) 获取当前的系统属性
System.out.println(System.getProperties());
System.out.println(System.getProperty("os.name")); // Windows 10
各个属性关系对应图如下:
每个Java应用程序都有一个Runtime类的Runtime ,允许应用程序与运行应用程序的环境进行接口。 当前运行时可以从getRuntime方法获得。
应用程序无法创建自己的此类的实例。
== 单例设计模式 ==
方法等:
int |
availableProcessors() 返回可用于Java虚拟机的处理器数量。 |
Process |
exec(String command) 在单独的进程中执行指定的字符串命令。 |
void |
exit(int status) 通过启动其关闭序列来终止当前正在运行的Java虚拟机。 |
long |
freeMemory() 返回Java虚拟机中的可用内存量。 |
void |
gc() 运行垃圾回收器。 |
static Runtime |
getRuntime() 返回与当前Java应用程序关联的运行时对象。 |
long |
maxMemory() 返回Java虚拟机将尝试使用的最大内存量。 |
long |
totalMemory() 返回Java虚拟机中的内存总量。 |
1、测试demo
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime(); // 获取当前程序的runtime
System.out.println(runtime.availableProcessors()); // 返回可用于Java虚拟机的处理器数量。
System.out.println(runtime.maxMemory()); // 返回Java虚拟机将尝试使用的最大内存量。
System.out.println(runtime.freeMemory()); // 返回Java虚拟机中的可用内存量。
System.out.println(runtime.totalMemory()); // 返回Java虚拟机中的内存总量。
try {
runtime.exec("notepad.exe");//打开记事本。
} catch (IOException e) {
e.printStackTrace();
}
}
====
8
1886912512
124876680
128974848
ends ~