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

时间:2010-11-22 15:47:08

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

}

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

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

5 个答案:

答案 0 :(得分:5)

public Test(...)constructor,其目的是创建对象。从示例代码中可以清楚地看到......

Test obj = new Test(l,m,n);

变量obj通过分配给Test的构造函数实例化为对象Test。在java中,每个构造函数必须与其编写的java文件具有完全相同的名称(和大小写)(在您的情况下,构造函数Test在Test中找到的.java)。

  

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

这一切都取决于你想对你的对象做什么。您可以使用零参数构造函数(即不需要参数),并设置方法来设置lmn,如下所示:

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会自动为你添加一个公共零参数构造函数。

希望这有帮助。

答案 1 :(得分:3)

名为Test的方法是Test类的所谓constructor。构造函数是在编写new Test(...)之类的函数时调用的方法。

请记住main方法是static方法,这意味着它不需要调用类Test的实例。 run方法不是这种情况。 run是一个实例方法,要调用它,您需要一个Test类的实例(在您的情况下为obj)。

答案 2 :(得分:1)

公共Test(...)位是该类的构造函数。它始终与类同名。类和主要方法是编程的两个完全不同的方面。类定义具有状态和方法的可重用组件。 main方法是从命令行调用的特殊方法。

你的例子是如此微不足道,以至于它并没有真正展示面向对象编程的任何好处。如果你考虑一个你有不同类的交互的例子,你可能会对它有更多的感觉。

答案 3 :(得分:0)

main方法是程序的入口点,在从命令行运行java Test时会被调用。

public Test(String a, String b, String c)Test课程的public constructor,在您致电new Test(l,m,n);时会被呼叫请注意构造函数中的al在main方法中引用相同的String ...这也适用于bm; cn

作为旁注,此类希望从命令行传递三个值,然后将它们存储在lmn

最后一点说明:如果您的方法带有签名public void run(),则您的课程可能会implement Runnable,以便可以在Thread中使用。< / p>

答案 4 :(得分:-1)

学习Java。

构造函数是一个被调用来创建一个对象的函数,它由一个与该类同名的函数表示,但没有返回类型。可以使用不同的参数声明多个构造函数。

在这种情况下,参数从参数数组中取出,并作为参数传递给Test的构造函数。

这些是Java编程语言的基本概念。你应该阅读Java。试试Thinking in Java,这是一本很棒的入门书。