[英]Passing arguments in main method in java class
有人能告诉我需要声明这样一个类:
public class Test {
String k;
public Test(String a, String b, String c){
k = a + " " + b + " " + c; //do something
}
public void run(){
System.out.println(k);
}
public static void main(String[] args) {
String l = args[0];
String m = args[1];
String n = args[2];
Test obj = new Test(l,m,n);
obj.run();
}
}
当然它可以工作,但我不明白为什么会用这种方式来实现某些东西。 是因为我们需要将参数直接传递给类main方法,这就是我们使用这种方式的原因还是有其他原因?
public Test(...)
使用相同类名的目的是什么。 为什么会这样?
public Test(...)
是一个构造函数 ,其目的是创建对象。 从示例代码中可以清楚地看到这一点......
Test obj = new Test(l,m,n);
变量obj
通过分配给Test
的构造函数实例化为对象Test
。 在Java中,每一个构造函数必须具有完全相同的名称(情况),因为它是用Java文件(在你的情况的构造函数Test
中Test.java被发现)。
......为什么会这样?
这一切都取决于你想对你的对象做什么。 你可以有一个零参数构造函数(即不需要参数),并有方法设置你的l
, m
, n
,如下所示:
package net;
public class Test {
private String k;
/**
*
*/
public Test() {
super();
// TODO Auto-generated constructor stub
}
public void set(String a, String b, String c) {
k = a + " " + b + " " + c; //do something
}
public void run() {
System.out.println(k);
}
public static void main(String[] args) {
String l = args[0];
String m = args[1];
String n = args[2];
Test obj = new Test();
obj.set(l, m, n);
obj.run();
}
}
正如您所看到的,它与您的示例完全相同,但使用零参数构造函数。
如果你的类根本没有构造函数,java会自动为你添加一个公共零参数构造函数。
希望这可以帮助。
名为Test
的方法是Test
类的所谓构造函数 。 构造函数是在编写类似new Test(...)
的函数时调用的方法。
请记住, main
方法是static
方法,这意味着它不需要调用类Test的实例。 run
方法不是这种情况。 run
是一个实例方法,要调用它,您需要一个Test
类的实例(在您的情况下为obj
)。
公共Test(...)位是该类的构造函数。 它始终与类同名。 类和主要方法是编程的两个完全不同的方面。 类定义具有状态和方法的可重用组件。 main方法是从命令行调用的特殊方法。
你的例子是如此微不足道,它并没有真正显示面向对象编程的任何好处。 如果您考虑一个示例,其中您有不同的类交互,您可能会对它有更多的感觉。
main
方法是程序的入口点,在从命令行运行java Test
时调用。
public Test(String a, String b, String c)
是Test
类的public
构造函数 ,在调用new Test(l,m,n);
时调用new Test(l,m,n);
注意,构造函数中的a
和main方法中的l
引用相同的String
...这也适用于b
和m
; c
和n
。
作为旁注,此类期望从命令行传递三个值,然后将它们存储在l
, m
和n
最后一点说明:如果你有一个带有签名public void run()
,你的类应该可以实现 Runnable
以便它可以在Thread
。
学习Java。
构造函数是一个被调用来创建一个对象的函数,它由一个与该类同名的函数表示,但没有返回类型。 可以使用不同的参数声明多个构造函数。
在这种情况下,参数从参数数组中取出,并作为参数传递给Test
的构造函数。
这些是Java编程语言的基本概念。 你应该阅读Java。 尝试用Java思考 ,这是一本很好的入门书。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.