繁体   English   中英

main(String args[]) 和 main(String[] args) 之间有区别吗?

[英]Is there a difference between main(String args[]) and main(String[] args)?

是否有区别:

public void main(String args[]) { ... } 

public void main(String[] args) { ... }

我不相信,但我想知道。

在语义上,它们是相同的。 但是,我建议在声明数组时使用后一种语法( String[] args )。 前一种语法主要是为了与 C 语法兼容。

由于String[]整体而言是 Java 中对象的类型,因此不拆分它会更加一致和清晰。

一个类似的问题解决了方法参数列表之后的[]

没有区别,但将括号放在类型 ( String[] ) 之后是 Java 中更常见的做法。

两者完全相同。 请参阅 Java 语言规范 (JLS) 以查看 java 中使用的语法。

String[] argsString args[]将创建一个没有大小和名称args的数组(在内存中保留一个位置)。

让我们考虑一下:

String [] x;

[]放在名称后面可以避免这样的微妙问题:-

String x [] , y; //x[] is an array but y is a String
String [] x y ; //two arrays x[] and y[] both

虽然两者都用于创建 String 类型的数组,但第二种更受欢迎,因为使用它,您可以同时创建多个 String 数组... 例如String[] a,b; 在这里,您同时创建了两个字符串数组 a 和 b。

然而

String a[],b; 将创建字符串数组 "a" 和字符串变量(不是数组) b

希望这能澄清。

它们只是两种写作风格

方法签名是相同的,所以没有区别。

它是一个公共方法,它不返回任何内容,方法名称是“main”,它采用一个 String 数组。

它们之间的区别在于,当我们尝试使用静态语法从一个类手动调用 main 方法到另一个类时,我们使用“string[] s”。 那时我们必须在 main 方法中传递一个字符串类型的数组作为参数。 当我们使用 "String... s" 时,不需要将任何字符串数组作为参数传递。 它将运行,如果您将数组作为参数传递与否无关紧要(如果您没有明确传递它,它会自行传递)......因此证明//////////

不。 两者没有区别。

Declaring a Variable to Refer to an Array 本文档中的Declaring a Variable to Refer to an Array部分。 从那个文档

浮动 anArrayOfFloats[]; // 这种形式是不鼓励的

所以只需使用第二种样式。

除了这两种风格,值得一提的是,以下也是自 Java 5 以来main()方法的有效签名:

public static void main(String... args)

Java 语言规范

方法 main 必须声明为 public、static 和 void。 它必须指定一个形式参数(第 8.4.1 节),其声明的类型是字符串数组。

省略号...是 var-args 的语法,可用于将任意数量的参数传递给方法。 更多关于它在这里

String args[] 和 String[] args 是相同的。 从某种意义上说,他们做同样的事情,创建一个名为 args 的字符串数组。

但是为了避免混淆并强制与您可能遇到的所有其他 Java 代码兼容,我建议在声明数组时使用语法 (String[] args)。

您可能会遇到的一种困惑是,当您尝试在一行中声明多个 String 数组时,那么String[] fruits, vegetables将与String fruits[], vegetables

前者创建了两个字符串数组fruits蔬菜,而后者创建了一个水果字符串数组和一个蔬菜字符串变量

有区别:例如,如果你写 int[] arr; - 这里 arr 是对整数数组的引用,而在 int arr[] 的情况下; - arr 是一个原始的 int 类型数组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM