可以通过以下方式声明和初始化字符串数组:
String[] str = {"A", "B"};
但是对于接受字符串数组作为参数的方法,为什么不能在那里使用相同的方法呢?
例如:如果在下面的代码中,我将对 show() 的调用从 show(str);
替换为 show({"A""B"});
,它显示编译器错误。为什么?
public class StringArray {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] str = {"A", "B"};
show(str);
}
static void show(String[] s) {
System.out.println(s[0] + s[1]);
}
}
显示的编译器错误是:
StringArray.java:9: illegal start of expression
show({"A", "B"});
^
StringArray.java:9: ';' expected
show({"A", "B"});
^
StringArray.java:9: illegal start of expression
show({"A", "B"});
^
StringArray.java:9: ';' expected
show({"A", "B"});
^
StringArray.java:9: illegal start of type
show({"A", "B"});
^
StringArray.java:11: class, interface, or enum expected
static void show(String[] s) {
^
StringArray.java:13: class, interface, or enum expected
}
^
7 errors
也允许使用 show(new String[] {"A", "B"});
。 new String[]{"A", "B"}
在作为方法参数传递时与 {"A", "B"}
有何不同?
提前致谢!
最佳答案
语法{"A", "B"}
(前面没有new String[]
)只能用作数组初始化表达式。在所有其他上下文中(包括方法调用),您需要使用 new
运算符。
参见 Java Tutorial on Arrays了解更多信息。
关于java - 传递一个字符串数组作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11535017/