2014-03-14 113 views
2

您好我只是想知道什麼是最好的方式,在java中聲明一個變量是宣佈變量最好的方法:用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); 

    } 

} 

在這種情況下聲明變量的首選方式是?

+5

你只在'main'方法中使用它們,所以在那裏聲明它們。通常,可以在最緊密的範圍內聲明變量。這可以讓您的代碼更清潔。 – Blorgbeard

回答

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


} 

這樣你會浪費記憶創建靜態字段。

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如果你不會使用它們。)