java用main方法声明变量的最佳方法

时间:2014-03-14 00:19:31

标签: java string

您好我只是想知道在java中声明变量的最佳方法是:

在方法外声明的静态变量:

    public class Copy {

   public static Scanner scanInput   =   new Scanner(System.in);
   public static String captureString;

    public static void main(String[] args){
        //Scanner scanInput   =   new Scanner(System.in);
        //String captureString;

        System.out.println("Please enter some words..");
        captureString   =   scanInput.nextLine();

        System.out.println("You entered: " + captureString);

    }

}

或主方法中的变量:

    public class Copy {

   //public static Scanner scanInput   =   new Scanner(System.in);
   //public static String captureString;

    public static void main(String[] args){
        Scanner scanInput   =   new Scanner(System.in);
        String captureString;

        System.out.println("Please enter some words..");
        captureString   =   scanInput.nextLine();

        System.out.println("You entered: " + captureString);

    }

}

在这种情况下,哪种方法是声明变量?

3 个答案:

答案 0 :(得分:2)

声明方法内的变量!这不仅仅是我的观点,那是惯用的答案。虽然另一个将为您提供正常运行的代码,但它无意地污染静态命名空间。如果它们是常量(并且在设计中用于多个类),那么我可能会给你一个不同的答案。

答案 1 :(得分:1)

如果您可以在main中声明变量,那么就这样做。但是如果你要在同一个类中调用其他方法并且那些方法需要访问相同的变量(并且将它们全部作为参数传递它们太笨重),你就不能这样做。在这种情况下,我的首选是将它们声明为该类的非静态 private成员,然后让main创建该类的实例:

public static void main(String[] args) {
    new Copy().doMain(args);
}

public void doMain(String[] args) {        // not static!
    // put your interesting stuff here
}

(如果您不打算使用它们,则无需通过args。)

答案 2 :(得分:0)

这取决于。如果所有代码都只在main方法中,那么在方法中声明变量。但是,如果其他方法或类需要访问它们,则需要全局声明它们。在这种情况下,最好将字段设为本地字段而不是全局字段。

P.S。如果您希望变量不是静态的,则可以始终创建该类的实例。

 public class Copy {

   public Scanner scanInput   =   new Scanner(System.in);
   public String captureString;

    public static void main(String[] args){
       new Copy();
    }
    public Copy()
    {
        System.out.println("Please enter some words..");
        captureString   =   scanInput.nextLine();

        System.out.println("You entered: " + captureString);
    }


}

这样你就会浪费内存来创建静态字段。