Java 为什么阵列<;字符串>;为kotlin中的主函数选择的参数类型?

Java 为什么阵列<;字符串>;为kotlin中的主函数选择的参数类型?,java,kotlin,jvm,Java,Kotlin,Jvm,kotlin的主要功能是: fun main(args : Array<String>) { println("Hello, world!") } funmain(args:Array){ println(“你好,世界!”) } 为什么传入数组?该数组包含传递给程序的命令行参数 如果您不想使用它们,也可以省略它,即您也可以只写: fun main() { println("Hello, world!") } 我已经太晚了,无法链接到此处(;我刚刚准备好并离开;-))

kotlin的主要功能是:

fun main(args : Array<String>) { 
  println("Hello, world!") 
}
funmain(args:Array){
println(“你好,世界!”)
}

为什么传入数组?

该数组包含传递给程序的命令行参数

如果您不想使用它们,也可以省略它,即您也可以只写:

fun main() {
  println("Hello, world!")
}
我已经太晚了,无法链接到此处(;我刚刚准备好并离开;-))


但尽管如此,我还是想添加一些关于
String
选择的内容(即我对选择
String
的看法):它可能是所有可能的命令行参数的最常见分母
任何
/
对象
太宽;只能在命令行中将数字或字符串传递给程序(管道的处理方式不同)。但是数字类型太窄,所以剩下的唯一可接受的类型是
String
,它可以同时表示这两种类型。如果要使用数字,仍然需要解析数字,但这比用数字解释字符串要好;-)

main的签名基于Java虚拟机:

方法
main
必须声明为
public、static和void
。它必须指定一个形式参数(§8.4.1),其声明类型为字符串数组。因此,以下任一声明均可接受:

public static void main(String[] args)
public static void main(String... args)

这就是Kotlin编译器编译主函数的目的。从Kotlin 1.3开始,显式的
数组可以省略,但在字节码中仍然可用。

集合在JAVA 1中不存在。因此,
Array
是默认选择。命令行提供的参数也是字符串格式,因此我们使用
Array
。为了保持与JAVA的互操作性,Kotlin遵循了相同的约定。但是,随着Kotlin 1.3的更新,这也被省略了。现在,您可以使用
main()。在这种情况下,应用程序将从主函数开始运行。传递String类型的参数数组。

为什么显式使用数组或参数?如果主函数不执行任何操作,那么为什么需要它?我假设主函数执行其他函数。不,等等。。。
main
-函数实际上是应用程序的入口点。。。或者换句话说:如果没有
main
-函数,您的程序将无法运行。。。例如,使用它,您可以调用:
javatestkt
,它将运行您的程序(如果
main
被放在名为
Test.kt
的文件中,并被编译成
class
-文件等.pp),因此,例如:如果您使用IDE“运行”您的文件,而没有
main
-函数,它将根本不会运行(存在例外情况,例如,您也可以运行测试和其他东西…)谢谢。但是他们选择
String[]
作为传递的类型有什么原因吗?您通常会启动这样的jvm程序:
java[…]ClassX arg1 arg2 arg3
,这将使args在
String[]中可用
对于ClassX的Main,您会使用什么其他类型来传递命令行参数?对于C等其他语言也是如此: