`System` 类和 `Runtime` 类在 Java 中是两个非常基础和常用的类,它们提供了与 Java 运行时环境交互的功能。下面我将分别简要介绍这两个类的常用用法。
### System 类常用用法
`System` 类包含了一些有用的类字段和方法,它们被 `final` 和 `static` 修饰,因此可以直接通过类名来调用。
1. **打印输出**
- `System.out.println(String x)`: 打印参数并换行。
- `System.out.print(String x)`: 打印参数但不换行。
- `System.err.println(String x)`: 打印错误或警告信息到错误流(stderr),并换行。
2. **读取输入**
- 虽然 `System` 类本身不直接提供读取输入的方法,但通常与 `Scanner` 类或 `BufferedReader` 类一起使用 `System.in`(标准输入流)来读取用户输入。
3. **获取系统属性**
- `System.getProperty(String key)`: 获取系统属性的值。
- `System.getProperties()`: 获取所有系统属性的 `Properties` 对象。
4. **退出程序**
- `System.exit(int status)`: 终止当前运行的 Java 虚拟机。参数 `status` 是状态码;按照惯例,非零状态码表示异常终止。
5. **时间相关**
- `System.currentTimeMillis()`: 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此虚拟机所经过的毫秒数。
### Runtime 类常用用法
`Runtime` 类提供了与 Java 应用程序的运行时环境交互的方法。每个 Java 应用程序都有一个 `Runtime` 类的实例,该实例允许应用程序与环境的其余部分交互。
1. **获取当前运行时对象**
- `Runtime.getRuntime()`: 返回当前 Java 应用程序的 `Runtime` 对象。
2. **执行外部程序**
- `Runtime.exec(String command)`: 执行指定的字符串命令,返回一个 `Process` 对象,用于控制进程和获取相关信息。
- `Runtime.exec(String[] cmdarray)`: 使用指定的命令和参数数组来执行程序。
3. **内存管理**
- `Runtime.totalMemory()`: 返回 Java 虚拟机试图使用的最大总内存量。
- `Runtime.freeMemory()`: 返回 Java 虚拟机中的空闲内存量。
- `Runtime.maxMemory()`: 返回 Java 虚拟机能够管理的最大内存量。
4. **垃圾收集**
- `Runtime.gc()`: 调用垃圾收集器,但具体执行时间由 JVM 决定。
这些是使用 `System` 类和 `Runtime` 类时的一些常用方法和用途。注意,虽然 `Runtime.exec()` 方法允许你执行外部程序,但处理外部程序的输出和错误流可能需要额外的注意,以避免死锁等问题。