args.length 等于调用时传入的实际参数个数,因可变参数本质是数组,编译后为string[] args;不传参时为0,传n个则为n,显式传数组时为其长度,但传null会触发nullpointerexception。

在 Java 可变参数(varargs)方法中,args.length 就是调用时传入的实际参数个数,二者完全一致,不存在偏差或隐含元素。
可变参数本质是数组
Java 的 ...Type 语法只是语法糖,编译后实际接收的是一个普通数组。例如:
等价于:
void print(String[] args) { ... }因此 args.length 就是该数组的长度,也就是调用时显式传入的参数个数。
各种调用场景下 args.length 的值
-
不传参数:
print();→args是一个长度为 0 的空数组 →args.length == 0 -
传一个参数:
print("a");→args = new String[]{"a"}→args.length == 1 -
传多个参数:
print("x", "y", "z");→args = new String[]{"x","y","z"}→args.length == 3 -
显式传入数组(不推荐但合法):
print(new String[]{"p","q"});→args引用该数组 →args.length == 2
注意:null 参数会导致 NullPointerException
如果调用时显式传入 null(如 print(null);),则 args 为 null,此时访问 args.length 会抛出 NullPointerException。这不是长度问题,而是空指针问题,需提前判空:
与重载方法的配合不影响 length 含义
即使存在其他重载方法(如 print(String s) 和 print(String... args)),编译器会选择最匹配的版本,一旦进入 varargs 方法体,args 就已确定为数组,其 length 始终反映本次调用传入的实参个数,不受重载逻辑干扰。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











