当前位置: 首页> 娱乐> 八卦 > JAVA中的System类

JAVA中的System类

时间:2025/7/15 15:23:09来源:https://blog.csdn.net/qa3629723/article/details/141017244 浏览次数:0次

Java中的System类

`System`类是Java中的一个预定义类,它属于`java.lang`包,因此无需显式导入即可使用。该类提供了一系列用于访问系统资源的静态方法和变量。这些资源包括标准输入、输出和错误流,以及访问环境变量和加载库的方法。

主要方法和功能

1. 标准输入输出和错误流

  •    `System.out`:用于打印输出到标准输出设备(通常是控制台)。
  •    `System.err`:用于打印错误消息到标准错误设备(也是控制台,但通常用于区分正常输出和错误信息)。
  •    `System.in`:用于从标准输入设备(如键盘)读取数据。

2. 环境变量

  •    `getenv()`:用于获取指定的环境变量值。
  •    `getenv()`(无参数):获取所有环境变量的不可修改映射。

3. 系统属性

  •    `getProperty(String key)`:获取系统属性的值。
  •    `getProperty(String key, String def)`:获取系统属性的值,如果属性不存在,则返回默认值。
  •    `setProperties(Properties props)`:设置系统属性。这通常不推荐,因为大多数系统属性在JVM启动时就已经设置好了。

4. 其他实用方法

  •    `arraycopy(Object src, int srcPos, Object dest, int destPos, int length)`:这是一个静态方法,用于在数组之间进行复制。尽管它不是`System`类特有的,但因为它非常有用,所以经常与`System`类一起提及。
  •    `currentTimeMillis()`:返回自1970年1月1日00:00:00 GMT以来的毫秒数。
  •    `exit(int status)`:终止当前运行的Java虚拟机。参数`status`用于表示退出状态;按照惯例,非零值表示异常终止。
  •    `gc()`:请求垃圾收集器运行。但是,请注意,这只是一个请求,JVM可以忽略它。
  •    `identityHashCode(Object x)`:返回给定对象的“系统身份哈希码”。这个哈希码是由JVM为对象内部使用的,并且在对象的生命周期内保持不变。

代码示例和注释

标准输入输出示例


 

public class SystemIOTest {public static void main(String[] args) {// 向标准输出打印消息System.out.println("Hello, World!");// 从标准输入读取一行文本Scanner scanner = new Scanner(System.in);System.out.print("Enter your name: ");String name = scanner.nextLine();// 向标准输出打印用户输入System.out.println("Hello, " + name + "!");// 关闭scannerscanner.close();}
}

访问环境变量

public class SystemEnvTest {public static void main(String[] args) {// 获取名为"PATH"的环境变量值String path = System.getenv("PATH");if (path != null) {System.out.println("PATH environment variable: " + path);} else {System.out.println("PATH environment variable is not set.");}// 获取所有环境变量Map<String, String> env = System.getenv();for (Map.Entry<String, String> entry : env.entrySet()) {System.out.println(entry.getKey() + "=" + entry.getValue());}}
}


 

访问系统属性

public class SystemPropertiesTest {public static void main(String[] args) {// 获取Java运行时环境的版本String javaVersion = System.getProperty("java.version");System.out.println("Java Version: " + javaVersion);// 尝试获取一个不存在的属性,并提供默认值String nonExistentProperty = System.getProperty("non.existent.property", "Default Value");System.out.println("Non-existent Property: " + nonExistentProperty);// 注意:修改系统属性通常不是个好主意,这里只是展示如何做到// System.setProperty("some.property", "newValue");}
}

垃圾收集和系统退出

public class SystemGCExample {public static void main(String[] args) {// 创建一个很大的数组来模拟垃圾回收压力byte[] largeArray = new byte[1024 * 1024]; // 1MB array// 调用gc()方法请求垃圾收集器运行System.gc();System.out.println("GC has been called, but it may not run immediately.");// Exit the application after a delay to ensure the output is visible.try {TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {System.out.println("Sleep interrupted.");}// 退出程序,这里使用0作为状态码表示正常退出System.exit(0);}
}


 

请注意,`System.exit(int status)`方法一旦调用,将立即停止Java应用程序,不会等待其他线程完成。任何在`System.exit()`之后执行的代码都不会执行。因此,上面的代码实际上不会打印出“GC has been called...”这行输出,因为程序在调用`System.exit(0)`后立即退出了。在实际应用中,不应该在程序退出前调用`System.gc()`,因为这会打断正常的垃圾回收过程。

以上代码片段展示了`System`类中一些常见的方法和功能。尽管`System`类包含的方法不是最丰富的,但它们提供了访问系统资源和进行基本系统管理的强大工具。当需要与系统环境变量、属性、输入输出流等交互时,`System`类将是一个非常有用的工具。

关键字:JAVA中的System类

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: