1、System类常用方法和属性
System
类是一个提供了一系列有用的类字段和方法的最终类(final class),主要用于提供对系统级操作和系统环境的访问。
方法/属性 | 描述 |
---|---|
System.err | 标准错误输出流。 |
System.in | 标准输入流。 |
System.out | 标准输出流。 |
System.arraycopy() | 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 |
System.clearProperty() | 根据key移除系统属性。 |
System.console() | 返回与当前 Java 虚拟机关联的唯一 Console 对象,没有返回null。 |
System.currentTimeMillis() | 返回以毫秒为单位的当前时间。 |
System.exit() | 终止当前正在运行的Java虚拟机。 |
System.gc() | 运行垃圾回收器。 |
System.getenv() | 返回当前系统环境变量键值映射(Map),并且是不可修改的。 |
System.getenv(String) | 获取指定环境变量的值。 |
System.getProperties() | 获取当前系统属性。 |
System.getProperty(String) | 根据key获取系统属性。 |
System.getProperty(String, String) | key - 系统属性的名称,def - 默认值。 |
System.getSecurityManager() | 获取系统安全接口,返回值是SecurityManager对象。 |
System.identityHashCode() | 返回给定对象的哈希码。 |
System.inheritedChannel() | 返回从创建此Java虚拟机的实体中继承的信道。 |
System.load() | 从本地文件系统中以指定的文件名加载代码文件。 |
System.loadLibrary() | 加载指定库名称为libname的系统库。 |
System.mapLibraryName() | 返回与平台相关的本地库的名字。 |
System.nanoTime() | 返回最准确的可用系统计时器的当前值,以毫微秒为单位。 |
System.runFinalization() | 运行处于挂起终止状态的所有对象的终止方法。 |
System.runFinalizersOnExit() | 已过时。具有固有的不安全性。 |
System.setErr() | 重新分配标准错误输出流。 |
System.setIn() | 重新分配“标准”输入流。 |
System.setOut() | 重新分配“标准”输出流。 |
System.setProperties() | 将系统属性设置为 Properties 参数。 |
System.setProperty() | 设置指定键指示的系统属性。 |
System.setSecurityManager() | 设置系统安全性。 |
使用示例:
public class Main {
public static void main(String[] args) {
// 使用 System.out 打印信息
System.out.println("Hello, World!");
// 使用 System.err 打印错误信息
//System.err.println("Error message!");
// 获取系统当前时间
long currentTime = System.currentTimeMillis();
System.out.println("Current time in milliseconds: " + currentTime);
// 获取系统环境变量
String pathVariable = System.getenv("PATH");
System.out.println("System PATH: " + pathVariable);
// 获取系统属性
String javaVersion = System.getProperty("java.version");
System.out.println("Java Version: " + javaVersion);
// 设置系统属性
System.setProperty("myProperty", "myValue");
String myProperty = System.getProperty("myProperty");
System.out.println("Custom System Property: " + myProperty);
// 运行垃圾回收器
System.gc();
System.out.println("Garbage collector invoked.");
// 获取系统安全管理器
SecurityManager securityManager = System.getSecurityManager();
if (securityManager == null) {
System.out.println("No security manager is set.");
} else {
System.out.println("Security manager is set.");
}
// 获取精确时间(纳秒)
long nanoTime = System.nanoTime();
System.out.println("Current time in nanoseconds: " + nanoTime);
// System.exit() 示例(请注意,这将停止程序运行)
// System.exit(0);
System.exit(0); //success
}
}
2、Runtime类常用方法和属性
Runtime
类代表了 Java 应用程序的运行时环境。每个 Java 应用程序都有一个单一的 Runtime
实例,它允许应用程序与其运行时环境进行交互。Runtime
类提供了几个重要的功能,使得 Java 程序能够执行一些与系统相关的操作。
方法 | 描述 |
---|---|
Runtime.getRuntime() | 获取 Runtime 类实例对象。 |
exec(String command, String[] envp, File dir) | 用指定的环境和工作目录在指定的进程中执行指定的字符串命令, 也可以说就是执行一个另外的程序。 |
freeMemory() | 返回 Java 虚拟机中的空闲内存量,以字节为单位。 |
totalMemory() | 返回 Java 虚拟机中的内存总量。 |
maxMemory() | 返回 Java 虚拟机试图使用的最大内存量。 |
availableProcessors() | 返回 Java 虚拟机可用的处理器数量。 |
gc() | 运行垃圾回收器。建议 Java 虚拟机去回收未使用的对象, 以便快速重用其占用的内存。 |
addShutdownHook(Thread hook) | 在 JVM 关闭时执行添加的钩子(hook), 执行完这些钩子后,JVM 才会关闭。可用于关闭时的清理操作。 |
使用示例:
public class Main {
public static void main(String[] args) {
try {
// 获取 Runtime 类的实例
Runtime runtime = Runtime.getRuntime();
// 执行外部程序
Process process = runtime.exec("cat /etc/passwd");
// 打印 Java 虚拟机的内存信息
long freeMemory = runtime.freeMemory();
long totalMemory = runtime.totalMemory();
long maxMemory = runtime.maxMemory();
System.out.println("Free Memory: " + freeMemory + " bytes");
System.out.println("Total Memory: " + totalMemory + " bytes");
System.out.println("Max Memory: " + maxMemory + " bytes");
// 获取可用处理器的数量
int availableProcessors = runtime.availableProcessors();
System.out.println("Available Processors: " + availableProcessors);
// 运行垃圾回收器
runtime.gc();
System.out.println("Garbage Collector has been invoked");
// 添加关闭钩子
runtime.addShutdownHook(new Thread() {
public void run() {
System.out.println("Shutdown hook is running");
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}