上一篇
Java参数包括命令行参数和传递给方法的参数,命令行参数通过main方法的String数组接收,方法参数在方法定义时声明,调用时传入实际值,传递方式有值传递(基本类型)和引用传递(对象),需注意参数类型匹配和顺序。
Java参数使用详解
Java中的参数是代码灵活性的核心,分为方法参数、命令行参数、系统属性参数和虚拟机参数四大类,正确使用参数能提升代码可复用性、动态配置能力和性能。
方法参数(Method Parameters)
方法参数是方法定义中声明的变量,用于接收外部传入的值。
基本语法
public void calculate(int a, double b) { // a和b是方法参数
System.out.println(a * b);
}
// 调用
calculate(5, 3.14); // 传入实际参数
关键特性
- 值传递:Java是值传递,修改基本类型参数不影响原始值,对象参数传递引用副本(修改对象属性会生效)。
- 可变参数(Varargs):
public void printNames(String... names) { // 可接受0~N个参数 for (String name : names) { System.out.println(name); } } printNames("Alice", "Bob"); // 传入多个参数 - 参数注解:使用
@NotNull等注解增强可读性和安全性(需配合IDE或Lombok)。
命令行参数(Command-Line Arguments)
通过main方法传递参数,用于程序启动时动态配置。

定义与使用
public class Main {
public static void main(String[] args) { // args接收命令行参数
for (String arg : args) {
System.out.println("参数: " + arg);
}
}
}
运行示例
java Main.java "file=config.txt" "mode=debug" # 输出: # 参数: file=config.txt # 参数: mode=debug
系统属性参数(System Properties)
通过-D设置的键值对,全局访问运行时配置。
设置与获取
java -Duser.country=US -Dapp.env=prod Main
public class Main {
public static void main(String[] args) {
String country = System.getProperty("user.country"); // "US"
String env = System.getProperty("app.env"); // "prod"
}
}
常用内置属性
| 属性名 | 作用 |
|---|---|
user.home |
用户主目录 |
java.version |
Java版本 |
file.encoding |
默认文件编码 |
虚拟机参数(JVM Arguments)
控制JVM行为的参数,分为标准参数、非标准参数和高级运行时参数。

内存配置示例
java -Xms512m -Xmx1024m -XX:+UseG1GC Main
-Xms512m:初始堆内存512MB-Xmx1024m:最大堆内存1024MB-XX:+UseG1GC:启用G1垃圾回收器
常用参数分类
| 类型 | 参数示例 | 作用 |
|---|---|---|
| 标准参数 | -version, -classpath |
所有JVM实现必须支持 |
| 非标准参数 | -Xloggc:gc.log |
特定JVM实现(如HotSpot) |
| 高级选项 | -XX:MaxGCPauseMillis=200 |
GC最大暂停时间(毫秒) |
最佳实践与注意事项
- 参数验证:
public void setAge(int age) { if (age < 0) throw new IllegalArgumentException("年龄不能为负数"); } - 避免过长的参数列表:
- 超过3个参数时建议使用Builder模式或封装为DTO对象。
- 安全性:
敏感参数(如密码)避免通过命令行传递,改用环境变量或加密配置文件。
- JVM参数调优:
生产环境需根据监控数据调整(如GC日志分析工具GCeasy)。

调试技巧
- 查看所有系统属性:
System.getProperties().list(System.out); // 打印全部属性
- IDE中配置参数:
- Eclipse:
Run Configurations → Arguments - IntelliJ:
Edit Configurations → VM options/Program arguments
- Eclipse:
掌握Java参数的使用,能显著提升代码灵活性和系统可维护性,建议结合实际场景练习:
- 方法参数用于模块解耦
- 命令行参数适配部署环境
- JVM参数优化服务性能
权威引用:
- Oracle官方Java教程:方法参数
- JVM参数规范(Java SE 17)
- 《Effective Java》第51条:谨慎设计方法签名
