字符串[]数据和字符串[]之间的区别是什么。。。java中的数据
我试过使用data和data1变量。它总是调用字符串。。。数据。 那么,String[]data和String之间的区别是什么呢。。。java中的数据字符串[]数据和字符串[]之间的区别是什么。。。java中的数据,java,variadic-functions,Java,Variadic Functions,我试过使用data和data1变量。它总是调用字符串。。。数据。 那么,String[]data和String之间的区别是什么呢。。。java中的数据 public class ArrayTest { public static void main(String[] args) { ArrayTest arrayTest = new ArrayTest(); // Option one String[] data = {"A", "B"
public class ArrayTest {
public static void main(String[] args) {
ArrayTest arrayTest = new ArrayTest();
// Option one
String[] data = {"A", "B", "C"};
// Option two
String data1 = "A";
arrayTest.test(data);
}
public void test(String[] ... data ) {
System.out.println("---From: String[] ... data---");
for(String[] item: data) {
for(String innerItem : item) {
System.out.println(innerItem);
}
}
}
public void test(String ... data ) {
System.out.println("---From: String ... data---");
for(String item: data) {
System.out.println(item);
}
}
}
在test(String…data)
中传递字符串数组,在test(String[]…data)
中传递字符串数组。检查更新的代码以了解图示:
public class ArrayTest {
public static void main(String[] args) {
ArrayTest arrayTest = new ArrayTest();
// Option one
String[] data = { "A", "B", "C" };
// Option two
arrayTest.test(data);
String[] data2 = { "D", "E" };
arrayTest.test(data, data2);
}
public void test(String[]... data) {
System.out.println("---From: String[] ... data---");
for (String[] item : data) {
for (String innerItem : item) {
System.out.println(innerItem);
}
}
}
public void test(String... data) {
System.out.println("---From: String ... data---");
for (String item : data) {
System.out.println(item);
}
}
}
输出:
---From: String ... data---
A
B
C
---From: String[] ... data---
A
B
C
D
E
在两个版本的方法签名存在的情况下,JVM会选择最接近的匹配,这就是为什么在arrayTest.test(data)
的情况下,JVM会选择test(String[]…data)
而在arrayTest.test(data,data2)
的情况下,JVM会选择test(String[]…data)
如果删除以下定义,程序仍将工作,但JVM将只有一个选择,即对两个调用都转到test(String[]…data)
public void test(String... data) {
System.out.println("---From: String ... data---");
for (String item : data) {
System.out.println(item);
}
}
最后,在使用Varargs时->(字符串[]…s)与(字符串[][]s)等价。参数被打包到一个数组中,该数组在运行时传递给方法。
您已经用自己的实现回答了您的问题:
用于:
1) 公共无效测试(字符串[]……数据)--数据打包为字符串[][]
2) 公共无效测试(字符串…数据)--数据打包为字符串[]
我强烈推荐Maurice Naftalin的书:《Java泛型和集合》String[].将阅读一段多个句子。
String[].
与String[].
@SamiKuhmonen不一样。那么我的问题是,为什么两种测试方法可以同时使用?为什么总是调用String…
method?您的问题是关于String[]。。。数据
类似于您的代码还是关于字符串[]数据
类似于您的标题?
method(String... s) // fine
method(int i , String... s) // fine
method(String... s,int i) // not fine , ...s should be last or only parameter
method(String[] s) // fine
method(int i , String[] s) // fine
method(String[] s,int i) // fine
method(String s[]) // fine
method(String s...) // not fine can't put dot's after variable name
method(int[] i , String[] s) //fine
method(int... i , String...) // not fine, only one var arg is allowed
method(String... s) // takes any number of comma separated string also the array of String
method(String[] s) //only takes array of String but not comma separated string