請忽略我的傲慢......學習java這幾天,我碰到這個完全一樣的問題,我的問題:Why can't I instantiate and create Object without main method? (Stack Overflow Error)
期待一個可能downvote呢......但請經過我的問題一次! !我試圖
爲什麼我不能在java外部實例化任何方法?
代碼:
public class Arrayprg{
Arrayprg ag = new Arrayprg(); //ignore this for a while and go thru code please
public static void main(String []args){
System.out.println("Hello Array");
new Arrayprg().declarearray();
}
public void declarearray()
{
int[] arr;
arr = new int[11];
new Arrayprg().assignarr(arr);
}
public void assignarr(int arr[])
{
int i;
for(i = 0; i < 11; i++)
{
arr[i] = i;
}
new Arrayprg().printarr(arr);
}
public void printarr(int arr[])
{
int i;
for(i = 0; i < 11; i++)
{
System.out.println(arr[i]);
}
}
}
思考邏輯,要通過代碼,你會看到很多new arrayprg()
....我以爲是instantiate outside of methods
,並呼籲通過所有方法它之後,但我想這是不允許在Java中。
請告訴我造成我的問題
在引述問題的解決去,因爲它解釋說,下面的事情發生了:
Create new instance of Arrayprg
-> ag = Create new instance of Arrayprg
-> ag = Create new instance of Arrayprg
-> ag = Create new instance of Arrayprg
說明在這個問題
給出....每當類的實例被實例化時,它就被初始化。這將永遠不會終止,直到你內存不足並導致堆棧溢出。使用調試器運行它以獲得更清晰的視圖。
我的問題 ,所以我有我的方案,這是創建一個循環的每次我創建一個實例,但爲什麼當我通過new Arrayprg().
調用函數我的意思是這個叫Arrayprg ag = new Arrayprg();
是當我打電話通過new Arrayprg()
裏面的方法爲什麼Arrayprg ag = new Arrayprg();
得到調用,並創建了錯誤的循環Stackoverflow ?????
下面的答案都描述你的計算器。然而,爲了更好地理解「對象」,我認爲你應該閱讀關於對象是什麼以及方法如何對對象的內部數據進行操作的教程。我認爲[本Oracle/Sun Java教程](http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html)中的'Rectangle'類應該指導您朝着正確的方向發展(另請參閱在[tutorialspoint]上的'Puppy'示例(http://www.tutorialspoint.com/java/java_jject_classes.htm)。也許還可以閱讀關於對象上下文中「this」的含義。 – wmorrison365