public class Document1 {
public static void main(String[] args) {
String i = "A";
eg();
}
public static void eg(){
System.out.println(" " + i);
}
}
我不明白爲什麼這不起作用。在java中訪問其他方法變量?
public class Document1 {
public static void main(String[] args) {
String i = "A";
eg();
}
public static void eg(){
System.out.println(" " + i);
}
}
我不明白爲什麼這不起作用。在java中訪問其他方法變量?
您在下面的方法獲得一個編譯器錯誤。
public static void eg(){
System.out.println(" " + i);
}
因爲i
是主方法的局部變量。您無法使用其他方法訪問。
你可以做的是,將該變量傳遞到你想要的地方。
public static void main(String[] args) {
String i = "A";
eg(i);
}
public static void eg(String param){
System.out.println(" " + param);
}
謝謝你,對不起,這是一個非常簡單的問題,我是新來的java ...和編程一般... – abarnybox
你應該通過i
作爲參數傳遞給方法eg().
在你的代碼,i
是在main方法的局部變量。因此,您的eg()
方法無法訪問它。
嘗試:
public static void main(String[] args) {
String i = "A";
eg(i);
}
由於eg()
方法是不知道可變i
的。它僅在main()
方法的範圍內。您需要將它傳遞給eg()
方法或將其設置爲實例變量(在本例中爲靜態變量)。
public static void main(String[] args) {
String i = "A";
eg(i);
}
public static void eg(String i){
System.out.println(" " + i);
}
,因爲它是在main
的範圍內聲明的你不能從你的函數eg()
訪問String i
。您可以通過在主要功能上方放置String i
來在全球範圍內聲明i
。或者把它作爲參數,以你的功能,如:
public static void eg(String i){
和函數調用更改爲:
eg(i);
它的範圍的問題。你的函數eg()不能「看到」變量i,因爲它不在其視圖中。但是,如果你做了如下:
public class Document1 {
String i = "A";
public static void main(String[] args) {
eg();
}
public static void eg(){
System.out.println(" " + i);
}
}
然後,它會工作,因爲現在的變量的作用域是整個類文件,而不是僅僅的主要方法。
因爲i
只存在於主範圍內。你必須通過i
裏面的eg
函數,像這樣eg(String param)
。
這就是所謂的問題scope
。 scope
是變量可見的代碼區域。例如:
for(int x = 0; x < 10; x++)
{
// x can only be used inside this loop.
}
另一個例子是,如果你聲明一個局部變量的方法中:
private void doSomething()
{
String value = "this can only be used inside doSomething()";
}
Here是一個非常有益的鏈接解釋的概念。
對於你的問題,你只需在方法中聲明一個變量。你應該讓一個參數化方法:
public void eg(String i)
{
// Your code as normal.
}
這一切都做變量範圍 - 「範圍」的意思,其中的變量是可訪問的。
在你的代碼中,i
是一個「局部變量」,它只在聲明它的方法範圍內(實際上只聲明後聲明爲)。這就是爲什麼其他方法不能「看到」它。
方法的參數也被認爲是局部變量。
下一級是實例變量,其作用域是所有方法,但只在實例的上下文中 - 每個實例都有自己的副本。
之後,你有靜態變量,其範圍是每個實例 - 每個類只有一個副本定義它。
「修理」你的代碼,你可以:
eg()
方法static
變量,這方法之外聲明(S)
爲什麼會期望它的工作? –
變量i不適用於eg()方法,因爲它不在範圍內。你應該多讀一點關於變量,方法和範圍的內容。 – Alex
如果你的車裏有一瓶威士忌,你可以在房間裏喝嗎?不。..除非你有一個'getter'從車裏帶給你:D – Maroun