[英]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 streetName
和static int streetNum
)來解決此問題。 或者你可以讓它們保持原樣,並通過對象實例與它們交互(在執行new ..
之后)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.