System.getProperties()获取JVM启动时的系统属性而非操作系统环境变量,返回Properties对象,推荐用entrySet()遍历并按键排序输出,常见属性包括java.version、os.name等,注意与System.getenv()区分。

<p>直接调用 <code>System.getProperties()</code> 获取的是 JVM 启动时读取的系统属性(<strong>不是操作系统的环境变量</strong>),比如 <code>java.version</code>、<code>os.name</code>、<code>user.home</code> 等。要遍历并输出这些系统属性,只需获取 <code>Properties</code> 对象并迭代其键值对即可。</p> <h3>获取并遍历系统属性</h3> <p>System.getProperties() 返回一个 <code>java.util.Properties</code> 实例(继承自 <code>Hashtable<object></object></code>),可直接用增强 for 循环或 keySet/entrySet 遍历:</p>
- 推荐使用
entrySet()—— 安全、清晰、避免重复查值 - 注意:某些属性(如
sun.*)可能因 JDK 版本或安全策略不可见,但默认情况下大多数标准属性可读 - 无需额外权限(除非 SecurityManager 显式限制)
示例代码(简洁可靠)
以下代码会按字母顺序打印所有系统属性及其值(自动跳过 null 值):
<code>Properties props = System.getProperties();
props.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.forEach(e -> System.out.println(e.getKey() + " = " + e.getValue()));</code>
若用传统写法(兼容 JDK 7+):
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
<code>Properties props = System.getProperties();
for (Map.Entry, ?> entry : props.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}</code>
常见关键系统属性速查
输出中你会看到这些高频项(具体值因环境而异):
-
java.version:JDK 版本(如 "17.0.2") -
os.name:操作系统名称(如 "Linux"、"Windows 10"、"Mac OS X") -
os.arch:CPU 架构(如 "amd64"、"aarch64") -
user.dir:JVM 启动时的工作目录 -
user.home:当前用户主目录 -
java.class.path:类路径(包含 jar 和 class 文件路径) -
line.separator:平台换行符(\n或\r\n)
⚠️ 注意:别和环境变量(Environment Variables)混淆
System.getProperties() 不等于 System.getenv():
-
System.getenv()返回操作系统级环境变量(如PATH、HOME) -
System.getProperties()是 JVM 自己维护的配置属性,部分来自启动参数(如-Dfile.encoding=UTF-8)或内置默认值 - 想同时查看两者?可分别调用
System.getenv()和System.getProperties()并各自遍历
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










