JAVA 中关于 String[] args 传参的问题。

为什么在 public static void main(String[] args){} 中可以接受任意个数的string 参数,即使一个参数也不传也不会出错。而同为数组类型的一个普通函数,举例说 public void sum(int[] a){};
调用该函数时候,我传递这样的实参 sum(1,2,3,4) 就会出错。
我知道JDK1.5以后 支持可变形参,不过那样的话形式应该是 public static void main(String ...args)的不是吗??
有没有高手替我解惑啊.........
最新回答
屋顶上的小猫咪

2024-10-15 12:58:39

这个是数组。数组可以是null,所以可以接受任意参数——另外,参数,不是直接调用main()传递、而是JRE的环境作判断、并传递的,没命令行参数时JRE就不传递。
ぜ龙游浅水

2024-10-15 09:56:32

sum(1,2,3,4)是四个参数,类型是int,不是int[] ,自然出错

可int[] a={1,2,3,4};
sum(a);
沿途有你

2024-10-15 10:22:17

public void sum(int[] a){};你应该这样传:sum(new int[]{ 1, 2, 3, 4 });
public void sum(int... a){};你应该这样传:sum(1, 2, 3, 4 );

自己多试试就知道啦。
ぜ龙游浅水

2024-10-15 09:23:52

你运行一个java程序的时候是如何传参的
是这样
java test 1 2 3 4
注意你运行这句的时候, 实际上是调用了java命令
既然java命令都可以载入类到虚拟机, 并运行二进制代码
它为什么不能把你test后面那个字符串转化成一个string数组呢