Java中获取系统属性最直接的方式是调用System.getProperty()方法,它基于JVM启动时读取的系统属性表返回字符串值;-D参数自动注册为系统属性,常用属性包括os.name、java.version、user.dir等,支持默认值重载和批量查看,但属只读快照且与环境变量不同。

Java中获取系统属性最直接的方式是调用 System.getProperty() 方法,它基于JVM启动时读取的系统属性表,返回字符串值;而系统参数(即命令行传入的-D选项)也统一归入该属性体系,无需额外解析。
常用系统属性一览
以下属性在开发和运维中高频使用,可直接通过键名获取:
- os.name:操作系统名称,如 "Windows 10"、"Linux"、"Mac OS X"
- os.version:操作系统版本号
- os.arch:CPU架构,如 "amd64"、"aarch64"
- java.version:JDK主版本,如 "17.0.2"
- java.home:JRE安装根目录
- user.dir:当前工作目录(程序启动路径)
- user.home:当前用户主目录
- file.separator:文件路径分隔符(Windows为\,Unix/Linux为/)
- line.separator:行分隔符(Windows为\r\n,Unix为\n)
获取自定义系统参数(-D参数)
启动Java应用时通过 -Dkey=value 传入的参数,会自动注册为系统属性。例如:
java -Dapp.env=prod -Dlog.path=/var/log/myapp MyApp代码中即可用:
立即学习“Java免费学习笔记(深入)”;
String env = System.getProperty("app.env"); // 返回 "prod"
String logPath = System.getProperty("log.path"); // 返回 "/var/log/myapp"
注意:若键不存在,getProperty() 默认返回 null,建议配合默认值重载方法避免空指针:
String timeout = System.getProperty("http.timeout", "5000"); // 未设置时返回 "5000"
批量查看所有系统属性
调试或排查环境问题时,可打印全部系统属性:
Properties props = System.getProperties(); props.list(System.out); // 格式化输出到控制台
或遍历键值对,按需过滤:
props.stringPropertyNames().stream()
.filter(key -> key.startsWith("java.") || key.startsWith("os."))
.forEach(key -> System.out.println(key + " = " + props.getProperty(key)));










