簡體   English   中英

Java 中的方法和變量范圍問題

[英]Method and Variable Scope Issue in Java

我需要幫助我無法弄清楚如何修復變量的范圍。 我希望這是我筆記的一個例子,但已經寫了將近 2 個小時。

public class methodPractice{
    String streetName;
    int streetNum;
        public static void streetName()
    { 
         String streetName = "Pope Ave.";
    }
        public static void streetNum()
    {
        int streetNum = 11825;
    }
        public static void main(String[] args)
    {
        streetName();
        streetNum();
        System.out.println("This is your home adress: " + streetNum + 
        streetName);
    }
}

謝謝您的幫助。

你在遮蔽田野。 使用this來確保您獲得字段或編譯錯誤。

public static void streetName()
{ 
    this.streetName = "Pope Ave.";
}

public static void streetNum()
{
    this.streetNum = 11825;
}

這是您的main方法,添加了行號:

1.    public static void main(String[] args) {
2.       streetName();
3.       streetNum();
4.       System.out.println("This is your home adress: " + streetNum + streetName);
5.    }

幾點...

  • 當第 2 行運行時,“streetName()”調用下面的靜態方法。 static關鍵字表示您可以自由調用該方法本身——也就是說,您不需要對象; 你不需要先調用new methodPractice()

     public static void streetName() { String streetName = "Pope Ave."; }
  • 當第 3 行運行時,它是同一件事:“streetNum()”調用了一個不同的靜態方法——同樣,完全可以自己調用它。

     public static void streetNum() { int streetNum = 11825; }
  • 第 4 行不同,發生了一些事情。 您的期望是“streetNum”找到您在課堂上聲明的int ,但它不起作用。 為什么? 因為你用“int streetNum”定義了那個成員——沒有“static”。 所以呢? 沒有被聲明為靜態的,它意味着“streetNum”屬於一個對象實例 那看起來像什么? 這是一個顯示對象創建的示例,然后將對象成員“streetNum”設置為 1。

     methodPractice object = new methodPractice(); object.streetNum = 1;

您可以通過將兩個非靜態成員聲明為靜態( static String streetNamestatic int streetNum )來解決此問題。 或者你可以讓它們保持原樣,並通過對象實例與它們交互(在執行new ..之后)。

暫無
暫無

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

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