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(); } } }