首先,讓我們開始簡單。所有不是構造函數的方法都需要返回類型。換句話說,
public void number(){
i = 1;
}
會更合適。
第二:main
方法傳統上有一個public static void main(String[] args)
的簽名。
現在,談談你的問題。我們來看幾個例子。我將打破一些常見的編碼習慣來解決我的觀點。
案例1
public void number(){
i = 1;
}
當你的代碼現在站立,你將有一個編譯時錯誤,因爲i
沒有曾經宣佈過。你可以通過在課堂上的某個地方聲明來解決這個問題。要訪問此變量,則需要Main
類型的對象,這將使你的類是這樣的:
public class Main {
int i;
public static void main(String[] args) {
Main myMain = new Main();
myMain.number();
System.out.print(myMain.i);
}
public void number(){
i = 1;
}
}
案例2
比方說,你不想讓i
類變量。你只是希望它是由函數返回的值。然後,您的代碼應該是這樣的:
public class Main {
public static void main(String[] args) {
Main myMain = new Main();
System.out.print(myMain.number());
}
public int number(){ //the int here means we are returning an int
i = 1;
return i;
}
}
案例3
前面的兩個案例將打印出1
作爲它們的輸出。但讓我們嘗試一些不同的東西。
public class Main {
int i = 0;
public static void main(String[] args) {
Main myMain = new Main();
myMain.number();
System.out.print(myMain.i);
}
public void number(){
int i = 1;
}
}
你認爲在這種情況下輸出是什麼?這不是1
!在這種情況下,我們的輸出是0
。爲什麼?
陳述int i = 1;
number()
,它創建一個新的變量,也被稱爲i
,在number()
範圍內。只要number()
完成,該變量就會被清除。原來的i
,在public class Main
下聲明沒有改變。因此,當我們打印出myMain.i
,其值爲0
案例4
更多的情況,只是爲了好玩:
public class Main {
int i = 0;
public static void main(String[] args) {
Main myMain = new Main();
System.out.print(myMain.number());
System.out.print(myMain.i);
}
public int number(){
int i = 1;
return i;
}
}
什麼將這個輸出是什麼?這是10
。你爲什麼問?因爲number()
返回i
是在number()
範圍的i
並具有1 myMain
的i
的值,但是,仍然不變案例3
如果你的'i'是一個實例變量,然後是,SOP將起作用,否則,不會。 – SudoRahul
取決於你想要什麼和你正在創建什麼樣的對象,你可以在你的類中聲明字段併爲其賦值,並且在類 –
的任何方法(非靜態)中使用,請閱讀[visibility](http ://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html),並閱讀Joshua Bloch在'Effective Java'中限制變量範圍的章節 – avalancha