|
樓主:好象聽說是有些不一樣,請高手指教。
2 樓:有一些不一樣。
對于原語類型的數(shù)組,如int[] a,在C里面只要這樣定義之后就可以用a[i]使用了,但是在JAVA里面是不行的,必須用int[] a = new int[LENGTH];來為數(shù)組分配空間。這里的a更應(yīng)該看成C里面的指針,它和C里面的int* a是一樣的,因?yàn)檫@個(gè)a(C里面的)也要先malloc一個(gè)空間之后才可以用。 對于對象數(shù)組,則要“兩次分配”,如: Object[] obj = new Object[2]; obj[0] = new Object(); obj[1] = new Object(); 因?yàn)閿?shù)組首先是一個(gè)句柄,而這個(gè)句柄指向的2個(gè)空間里面又是存儲著兩個(gè)指向Object類型的句柄。 而C里面不完全相同: struct Object{}; struct Object* obj = (struct Object *)malloc(2 * sizeof(struct Object)); 其實(shí)他們的原理大至是相同的。只不過JAVA里數(shù)組的內(nèi)存分配是在堆里面的,必須用new 來分配,而C里面是在棧里面分配的,定義的時(shí)候會自動(dòng)分配。 在《Thinking in JAVA》中有更詳細(xì)的介紹。 |
|
|