簡體   English   中英

我可以在 Java 的 class 方法中使用 class 變量嗎?

[英]Can I use class variable in class method in Java?

我正在學習 Java 並自己練習。 我試圖創建一個 class 變量String username ,我想我會得到結果“Hi Nat”,因為方法engHi()與變量在同一個 class 中。

class Greetings{
    String userName = "Nat";
    public static void engHi(String userName){
        System.out.println("Hi "+userName);
    }
}
public class Main {
    public static void main(String[] args) {
        Greetings.engHi();
    }
}

我收到了這條信息。

Error:(11, 18) java: method engHi in class com.company.Greetings cannot be applied to given types;
  required: java.lang.String
  found: no arguments
  reason: actual and formal argument lists differ in length

然后我在方法engHi()中添加了this.username = username

class Greetings{
    String userName = "Nat";
    public static void engHi(String userName){
        this.userName = userName;
        System.out.println("Hi "+userName);
    }
}
public class Main {
    public static void main(String[] args) {
        Greetings.engHi();
    }
}

結果是

Error:(12, 18) java: method engHi in class com.company.Greetings cannot be applied to given types;
  required: java.lang.String
  found: no arguments
  reason: actual and formal argument lists differ in length

我認為由於該方法在同一個 class 中,因此我認為該方法將“自動”獲取變量用戶名,因此在調用該方法時我沒有輸入任何參數。 所以..這意味着方法不會從同一個 class 中獲取任何變量?

您的代碼的問題在於您的方法engHi()需要將用戶名字符串作為參數發送。 如果你刪除engHi()的參數,這個錯誤應該 go 消失。

class Greetings{
    String userName = "Nat";
    public static void engHi(){ //nothing required to be passed in when you call engHi()
        System.out.println("Hi "+userName);
    }
}
public class Main {
    public static void main(String[] args) {
        Greetings.engHi();
    }
}

在呼叫中添加用戶名,例如Greetings.engHi("Nat"); 或從接受 function 中刪除它

public static void engHi(){
}

您的方法 engHi 期望在Greetings.engHi();

該錯誤與使用 class 變量幾乎沒有關系。

相反,如果使用N arguments 聲明方法,則需要使用N arguments 調用它。

聲明: engHi(String userName) - 1 個參數。

呼叫: Greetings.engHi() - 0 arguments。

參數計數不匹配是語言違規。

此外,在這兩行中:

String userName = "Nat";
public static void engHi(String userName){

兩次出現的username不是指同一件事。 第一個聲明了 class 實例的成員; 第二個是engHi方法的形式參數,它將設置為調用者作為實際參數提供的任何值。

static方法只能訪問static變量。 static方法可以訪問static和非static變量。

在 engHi() 方法中創建 Greetings class 的 object。

 public static void engHI() { 
   Greetings greetings = new Greetings(); 
   System.out.println("Hi " + greetings.userName);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM