[英]Creation of Arrays in Java (The C++ Style)
為什么我們不能像這樣在Java中創建數組:
int marks[5];
在此聲明后分配值?
任何人請解釋術語或差異。
這是因為Java中沒有堆棧數組。 這是Java等價物:
int[] marks = new int[5];
它看起來很像在C ++中分配動態大小的數組。 當然你不必擔心調用delete[]
,因為它是垃圾收集的。
因為您引用的語法在堆棧上分配數組,並且Java數組是對象,並且所有Java對象都在堆上分配(模數最近的JVM優化,但這些是隱式的)。
而且在沒有手動內存管理的語言中幾乎必須是那種方式,因為堆棧分配的東西在調用返回時消失,導致懸掛指針,而Java的基本特征是不允許這樣的東西。
當然有人可能會爭辯說Java應該使用堆棧分配語法進行堆分配,但這會讓任何知道C的人感到困惑 - 不好。
在Java中,數組的大小由創建它的表達式決定,例如:
int[] marks = new int[5];
要么
int[] marks = {1,2,3,4,5};
另請注意 ,盡管Java中允許使用語法int marks[]
(Java有幾個與C ++兼容的規則),但不推薦使用,語法int[] marks
更具慣用性,因此更受歡迎。
int[] marks = new int[]{1, 2, 3};
因為數組是Object
-s(繼承自Object
類)。 要創建對象,您必須使用new
關鍵字。 (大多數時候)。
我認為new
關鍵字背后的原因是表示變量是對動態分配的實例的引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.