system.getproperties() 返回只读的 properties 对象,包含 jvm 启动时加载的系统属性;常用 system.getproperty(key) 获取单个属性值,支持默认值;属性多来自 -d 参数,也可用 system.setproperty() 动态修改。

System.getProperties() 返回一个 Properties 对象,里面包含了当前 JVM 启动时读取的系统属性(key-value 形式),比如 Java 版本、操作系统信息、用户目录等。
获取所有系统属性
直接调用 System.getProperties() 即可获得完整属性集:
- 返回的是
java.util.Properties(继承自Hashtable<string string></string>) - 结果是只读快照,修改它不会影响 JVM 实际运行时的系统属性
- 常见用途是遍历或查询特定属性,例如:
Properties props = System.getProperties();
props.list(System.out); // 打印全部到控制台
获取单个指定属性
更常用的是用 System.getProperty(String key) 获取某个值:
- 例如:
System.getProperty("java.version")→ 返回 JDK 版本字符串 - 支持默认值参数:
System.getProperty("user.home", "/tmp") - 若 key 不存在且未提供默认值,则返回
null
常用系统属性 key 示例
这些 key 在大多数 JVM 中都可用:
-
java.version:JRE 版本 -
os.name:操作系统名称(如 "Windows 10"、"Linux") -
user.dir:当前工作目录 -
user.home:当前用户主目录 -
file.separator:文件路径分隔符(Windows 是\,Unix 是/) -
line.separator:行分隔符(\r\n或\n)
注意:启动参数与动态设置
系统属性主要来自 JVM 启动参数(如 -Dmy.prop=value),也可在运行时用 System.setProperty() 修改(仅对当前 JVM 有效):
-
-Dlog.level=debug启动后可通过System.getProperty("log.level")读取 -
System.setProperty("temp.mode", "fast")可临时添加或覆盖属性 - 但不建议频繁修改,尤其涉及安全或核心行为的属性(如
java.security.manager)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











