Java中的String 和String …有什么区别?
我应该如何在Java中声明main()
方法?
喜欢这个:
public static void main(String[] args) { System.out.println("foo"); }
或者像这样:
public static void main(String... args) { System.out.println("bar"); }
String[]
和String...
之间的区别是什么?如果有的话?
我应该如何在Java中声明main()方法?
String[]
和String...
在内部是相同的东西,即字符串数组。 不同之处在于,当您使用varargs参数( String...
)时,您可以调用以下方法:
public void myMethod( String... foo ) { // do something // foo is an array (String[]) internally System.out.println( foo[0] ); } myMethod( "a", "b", "c" ); // OR myMethod( new String[]{ "a", "b", "c" } ); // OR without passing any args myMethod();
当你将参数声明为String数组时,你必须这样调用:
public void myMethod( String[] foo ) { // do something System.out.println( foo[0] ); } // compilation error!!! myMethod( "a", "b", "c" ); // compilation error too!!! myMethod(); // now, just this works myMethod( new String[]{ "a", "b", "c" } );
String[]
和String
之间的区别是什么?如果有的话?
惯例是使用String[]
作为主要的方法参数,但是使用String...
也是有效的,因为当你使用varargs时,你可以像调用带有数组作为参数的方法一样调用方法,参数本身将是方法体内的一个数组。
一个重要的事情是当你使用vararg时,它需要是方法的最后一个参数,你只能有一个vararg参数。
您可以在此处阅读有关varargs的更多信息: http : //docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
String...
转换为String[]
。 主要区别在于您可以通过两种方式调用vararg方法:
method(a, b, c); method(new String[] {a, b, c});
而你需要调用一个接受这样的数组的方法:
method(new String[] {a, b, c});
对于main
方法,它没有什么区别。
String[] args
采用数组参数。
String... args
将任意数量的字符串作为其参数,并从中创建一个数组。
String[]
是一个字符串数组。 因此, String
数据类型的许多变量的容器。 例如:
String[] strArray = new String[2]; str[0] = "Hello"; str[1] = "World"; String str = "Hello World";
希望这清除你的疑问:)
让我们通过示例及其超级简单来理解差异
mymethod(String... str) vs mymethod(String []str)
方法getid采用int类型数组。
因此,如果我们调用getId方法,我们需要传递数组。
要传递数组,我们可以创建一个匿名数组,或者只是简单地创建一个数组并传递,就像我在下面的例子中所做的那样。
class test { public void getid(int []i) { for(int value:i) { System.out.println(value); } } public static void main(String []arg) { int []data = {1,2,3,4,5} new test().getid(data); } }
现在我们使用三点 – > mymethod(int … i)
现在该方法仍然需要数组但不同的是现在我们可以将直接值传递给该方法并且“…”自动将其转换为数组
看下面的例子
class test { public void getid(int ...i) { for(int value:i) { System.out.println(value); } } public static void main(String []arg) { new test().getid(1,2,3,4); } }
使用“…”而不是“[]”的优点
1)节省内存: –
在示例一中使用mymethod(int [])
当我们在main方法“Data []”中创建一个数组时,它们会创建新对象并在内存中获得空间
以及当我们创建方法并定义那样的参数时: –
getid(int []) – >这会在内存中创建另一个对象,所以我们在一个内存中有两个对象,它们彼此相同
2)使用“……”时你什么都不能通过
在示例二中,您可以在调用“getid”方法时不传递任何内容,并且它们将在不给出任何错误的情况下工作,这对于使程序更稳定非常有帮助,例如
. . . public static void main(String []arg) { new test().getid(); } . . .
但是如果我们调用“getid”方法并且在使用“[]”时没有传递任何参数,那么它将在编译时显示错误