在java类的main方法中传递参数

Riz*_*wan 3 java

有人能告诉我需要声明这样一个类:

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();
 }

}
Run Code Online (Sandbox Code Playgroud)

当然它可以工作,但我不明白为什么会用这种方式来实现某些东西.是因为我们需要将参数直接传递给类main方法,这就是我们使用这种方式的原因还是有其他原因?

public Test(...)使用相同类名的目的是什么.为什么会这样?

Buh*_*ndi 5

public Test(...)是一个构造函数,其目的是创建对象.从示例代码中可以清楚地看到这一点......

Test obj = new Test(l,m,n);
Run Code Online (Sandbox Code Playgroud)

该变量通过分配给构造函数来obj实例化.在Java中,每一个构造必须确切的相同名称(情况),因为它是用Java文件(在你的情况的构造在Test.java被发现).TestTestTest

......为什么会这样?

这一切都取决于你想对你的对象做什么.你可以有一个零参数的构造函数(即不需要参数),并有方法来设置你的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();
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它与您的示例完全相同,但使用零参数构造函数.

如果你的类根本没有构造函数,java会自动为你添加一个公共零参数构造函数.

希望这可以帮助.