[英]Java Array size
我問我Java中的數組初始化是否與C相同。在C中,您無法在程序運行時定義數組的大小。 在Java中是否可能(或者恰如其分)?
public int[] createArray(int size) {
return new int[size];
}
在我的情況下,我必須使用數組而不是arraylist因為我在Panel上繪制了Polyline
g.drawPolyline(xPoints[], yPoints[], n);
感謝幫助
創建后不能更改數組大小,但可以使用System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
將數組的值復制到另一個更大的數組,不用擔心關於它的速度,因為它是內置函數並使用JNI實現,所以速度非常快
C沒有像Java那樣的“數組”的基本概念; 在C中,你是
malloc(some_size * sizeof(one_element))
並將其影響到one_element *
(當然,這是一個粗略的描述)。
在Java中,數組同樣是動態分配的; 如果你知道大小,在運行時,那么你可以,對於SomeType
和大小someSize
的數組做:
final SomeType[] myArray = new SomeType[someSize];
從本質上講,它是完全相同的; 包括以下事實:在兩種情況下,數組都不可調整大小,但如果指定無效索引會發生巨大差異:
IndexOutOfBoundsException
; 總而言之,除了錯誤地使用“數組”的后果之外,C中的內容以及Java中的內容實際上與創建數組開始時的語法完全不同......
正如其他人所說,你不能這樣做。 但是你可以使用ArrayList(或任何其他List)並在需要的地方將其轉換為簡單數組,如下所示:
ArrayList<String> arrayList = new ArrayList<>();
String strings[] = (String[])arrayList.toArray();
在C中,您無法在程序運行時定義數組的大小。 在Java中是否可能(或者恰如其分)?
是的,您可以在運行時定義數組的大小,而不是重新定義它。 這將在堆上創建一個對象,其中有足夠的空間來容納所需數量的基元(在基本數組的情況下)或對象引用(將它們視為指針)。
如果要重新定義數組的大小,則需要創建一個新數組並復制舊數組( System.arraycopy()
或Arrays.copyOf(...)
)。
在我的情況下,我必須使用數組而不是arraylist因為我在Panel上繪制了Polyline
好吧,你仍然可以使用一個列表並調用toArray(...)
。 這也是在運行時創建數組的示例。
由於您最終要調用Graphics.drawPolyline(...)
您必須維護兩個List<Integer>
或最好是List<Point>
,並在該列表內部構造x和y數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.