聊一聊常用类System

大家好,我是G探险者!

今天来聊一聊java常用类System。

事情的起因是项目里面使用了Jasypt 框架对配置项进行加密,主要是密码相关的配置,项目里面的application.yml有关密码的配置项,使用了占位符${PASSWORD}进行了占位,然后在idea里面的设置了JVM的启动参数VM OPTIONS

我在jvm的启动参数中,设置了密码这个变量值。

在代码里面是也是通过System.getProperty("PASSWORD")这种方式来取值的。这样在我本地是没有问题的,

但是我们的项目最终打成镜像部署在华为云上,华为云里面设置环境变量和在本地idea里面设置JVM启动参数不是一回事,而是对应着idea里面的环境变量

而获取系统环境变量的值是通过System.getEnv("PASSWORD")这样的方式来获取的。这篇文章主要计时为了强调

System.getProperty(String key)和System.getenv(String name)的区别,顺带介绍一下System的其他常用方法。

System 类是 Java 中的一个核心类,属于 java.lang 包。它提供了与操作系统、运行时环境和系统资源的交互功能,常用于系统级操作。System 类是一个 final 类,意味着不能被继承。

下面是一些 System 类的常用功能:

1. 标准输入/输出流

  • System.in:标准输入流,通常是从键盘读取数据。
  • System.out:标准输出流,通常是打印输出到控制台。
  • System.err:标准错误流,通常用于输出错误信息。

例如:

复制代码
System.out.println("Hello, World!");  // 输出到控制台

2. 数组拷贝

System.arraycopy() 方法用于高效地将一个数组的内容拷贝到另一个数组中。

复制代码
int[] source = {1, 2, 3, 4, 5};
int[] destination = new int[5];
System.arraycopy(source, 0, destination, 0, 5);  // 将source数组的内容拷贝到destination

3. 当前时间

  • System.currentTimeMillis():返回自1970年1月1日00:00:00 UTC到当前时间的毫秒数。
  • System.nanoTime():返回一个高精度的时间值,通常用于计算时间差。

示例:

复制代码
long startTime = System.currentTimeMillis();
// 执行某些操作
long endTime = System.currentTimeMillis();
System.out.println("耗时: " + (endTime - startTime) + " 毫秒");

4. 退出程序

  • System.exit(int status):终止当前正在运行的 Java 虚拟机。status 参数是一个退出状态码,通常 0 表示正常退出,非零表示异常退出。

示例:

复制代码
System.exit(0);  // 正常退出

5. 垃圾回收

  • System.gc():请求垃圾回收器回收无用的对象,但并不保证一定会执行回收。调用 gc() 方法只是建议 JVM 进行垃圾回收,具体是否执行取决于 JVM 的实现。

6. 系统属性

  • System.getProperty(String key):获取系统属性,返回与给定键相关的系统属性值。
  • System.setProperty(String key, String value):设置系统属性。

例如:

复制代码
String javaVersion = System.getProperty("java.version");
System.out.println("Java version: " + javaVersion);

7. 环境变量

  • System.getenv():返回当前 Java 进程的环境变量。
  • System.getenv(String name):返回指定名称的环境变量。

示例:

复制代码
String path = System.getenv("PATH");
System.out.println("PATH 环境变量: " + path);

8. 安全管理器

System.setSecurityManager(SecurityManager securityManager) 用于设置一个安全管理器,控制程序的安全行为。通常用于限制对某些系统资源的访问。

9. 类加载器

System.getProperty("user.dir"):获取用户当前的工作目录。

小结

System 类是 Java 的一个重要工具类,提供了大量与系统相关的功能,如时间、资源管理、输入输出流、退出程序等。由于其提供的功能多涉及到与底层操作系统的交互,因此它在很多 Java 程序中都扮演着至关重要的角色。

相关推荐
晨曦中的暮雨7 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
文丑颜不良啊8 小时前
LeetCode876~900题目解析
java·leetcode
aloha_7899 小时前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver
知守观9 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
独隅10 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
Wang's Blog10 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
SL_staff10 小时前
JVS私有化文档系统上线避坑指南:5大运维与业务协同断点及检测加固实践
java·开源·全栈
FinelyYang12 小时前
考试系统简答题 AI 阅卷:覆盖度驱动、异步评分与人机协同落地实践
java·大数据·人工智能
hhhjhl12 小时前
Yup 跨端三方库仓颉适配全流程
java·开发语言
用户31268748772012 小时前
Java 对象内存布局:压缩指针、对齐填充与 JOL 实测
java