Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串[]和字符串。。。在爪哇?_Java_Main_Arrays - Fatal编程技术网

Java 字符串[]和字符串。。。在爪哇?

Java 字符串[]和字符串。。。在爪哇?,java,main,arrays,Java,Main,Arrays,我应该如何在Java中声明main()方法 像这样: public static void main(String[] args) { System.out.println("foo"); } 或者像这样: public static void main(String... args) { System.out.println("bar"); } method(new String[] {a, b, c}); String[]和String…之间的实际区别是什么 如何在Ja

我应该如何在Java中声明
main()
方法

像这样:

public static void main(String[] args)
{
    System.out.println("foo");
}
或者像这样:

public static void main(String... args)
{
    System.out.println("bar");
}
method(new String[] {a, b, c});
String[]
String…
之间的实际区别是什么

如何在Java中声明main()方法?

String[]
String…
在内部是相同的。e、 ,一个字符串数组。 不同之处在于,当您使用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();
当您将参数声明为字符串数组时,必须以这种方式调用:

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…
也可以,因为当使用varargs时,您可以用调用方法的相同方式调用一个以数组作为参数的方法,而参数本身将是方法体中的数组

重要的一点是,当您使用vararg时,它必须是方法的最后一个参数,并且您只能有一个vararg参数


您可以在此处阅读有关varargs的更多信息:

String…
转换为
字符串[]
。主要区别在于,可以通过两种方式调用vararg方法:

method(a, b, c);
method(new String[] {a, b, c});
然而,您需要调用一个接受如下数组的方法:

public static void main(String... args)
{
    System.out.println("bar");
}
method(new String[] {a, b, c});

对于
main
方法,它没有任何区别。

String[]args
采用数组参数


字符串。。。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[])的示例一中
当我们在主方法“Data[]中创建数组时,它们会创建新对象并在内存中获得空间
以及当我们创建方法并定义参数时,比如:-
getid(int[])->这将在内存中创建另一个对象,因此我们在内存中有两个彼此相同的对象

2) 使用“…”时不能传递任何内容
在示例2中,当调用“getid”方法时,您不能传递任何消息,它们将在不给出任何错误的情况下工作,这对于使程序更加稳定非常有帮助

.
.
.
    public static void main(String []arg)
    {
    new test().getid();
    }
.
.
.

但是,如果我们调用“getid”方法并且在使用“[]”时没有传递任何参数,那么它将在编译时显示错误