为啥我们将字符串数组作为参数传递给 main() 方法,为啥不传递任何集合类型或包装类型或原始类型?

Posted

技术标签:

【中文标题】为啥我们将字符串数组作为参数传递给 main() 方法,为啥不传递任何集合类型或包装类型或原始类型?【英文标题】:Why we Pass String array as argument to main() method, why not any collection type or wrapper type or primitive type?为什么我们将字符串数组作为参数传递给 main() 方法,为什么不传递任何集合类型或包装类型或原始类型? 【发布时间】:2014-10-03 05:57:20 【问题描述】:

为什么在 main 方法中必须将字符串 arg[] 作为参数传递? 为什么我们不能传递 java 中可用的任何其他数据类型? 在java的main方法中传递String arg[]的重要性是什么?

【问题讨论】:

它是用于运行您的应用程序的系统参数! *** 中有一个类似的问题。看看这个链接***.com/questions/10783190/… 【参考方案1】:

历史。这是自 C 时代以来的约定,甚至更早? Java 的大部分语法都来自 C。

此外,命令行参数是字符串,这就是数据类型的原因。 Java 1 中不存在集合,因此它们不是一个选项。数组确实存在。

【讨论】:

【参考方案2】:

因为通过String arrays,我们可以很容易地以字符串的形式传递与程序相关的选项/参数等所有必要的参数。可以有多个参数!

此外,所有其他数据类型都可以轻松地从 String 转换!

一个调用带有多个参数的程序的示例,因此将它们存储在字符串数组中!

java Sample_Example example1 example2 example3  

参数:

  args[0]=example1
  args[1]=example2
  args[2]=example3 

在这里,您正在调用Sample_Example 类并传递三个参数example1example2example3 以供程序使用!因此,将它们存储在 String 数组而不是其他原始数据类型或集合或 Wrapper 数据类型中总是更好的选择。我们总是倾向于让我们的工作变得更简单,而 Java 通过提供这个工具让我们所有人都变得更简单!

【讨论】:

虽然如此,但这并不能解释为什么他们坚持使用数组,其中单个字符串也可以工作。 这件事我们也可以通过使用任何集合类型来实现。那么,为什么是 main(String arg[]),为什么不是 main(List l) 或 main(Integer i)? 我已经提到 Java 倾向于通过使用所有数据类型中最简单的 ---String 来使其更简单。尽管我同意 Collections 也提供该功能,但它们确实需要更纯粹或更好的方式。就像如果您不提供像 List<String>,etc. 这样的集合的通用实现,那将是一个废话,因为您可以将所有类型的项目存储在 List 中,从而导致没有基本类型的非结构化数据结构,这真的是馊主意!如果您满意,请点赞,如果非常满意,请采纳答案! 另外,集合直到 Java 1.2 才存在。我开始觉得老了:-)。是的,在 Java 1 中,我们不得不在雪地里爬山到解释器……【参考方案3】:

这个想法是,您的 Java 应用程序将通过命令调用(无论是由用户显式输入,还是隐式输入(例如当您单击操作系统 GUI 中的快捷方式时)等等)。

String[] 指的是调用应用程序时指定的命令行参数。

有关详细信息,请参阅 Oracle 的 Java 教程中的 Command-Line Arguments。

【讨论】:

【参考方案4】:

当我们将 java 程序运行到命令提示符时,我们可以将一些输入传递给我们的 Java 程序。这些输入存储在这个 String args 数组中。

【讨论】:

【参考方案5】:

因为如果我们在运行 main 方法时也没有传递任何参数值,那么它也可以正常工作。当我们没有将任何值传递给字符串 arg[] 时,它会创建一个空字符串。在其他数据类型的情况下,我们必须传递一些值。

【讨论】:

以上是关于为啥我们将字符串数组作为参数传递给 main() 方法,为啥不传递任何集合类型或包装类型或原始类型?的主要内容,如果未能解决你的问题,请参考以下文章

当我们将对象作为参数传递给方法时,为啥会调用复制构造函数?

当我们将数组作为参数传递给其他函数时,数组的值如何变化? [复制]

C将int数组指针作为参数传递给函数

如何将数组作为参数传递给另一个脚本?

如何从控制台将参数传递给除 String args[] 之外的 main?

将主要参数传递给方法[关闭]