本文目錄一覽:
java數組的最大長度是多少
java 中數組的最大長度是多少呢?看一下它的length屬性就可以了。length屬性是32位的有符號整數,它的最大值是2的31次冪,就是2G。為何有這個限制呢?為什麼length的屬性不是long型呢?我們假設一下,如果它是long型的,那麼它的最大長度是2的63次冪。內存永遠也不會有那麼大吧。即使是位元組數組長度是int的,最大長都達到2GB.
由此想到了String,這個傢伙底層也是基於數組的,是一個字符數組。字符是16位的基本類型,一個String的最大長度是多少呢?就是字符數組的最大長度也是2G,佔用內存是4GB。
從JVM的角度來解釋:創建數組的位元組碼是anewarray和newarray,操作數棧的字寬是32位,而這兩個位元組碼的參數都是一個字長,所以無法接受long型的長度參數。不知道這樣解釋是否很牽強。
Java數組的長度到底能有多大
Java整型數組的最大長度到底有多長?
今天上網查了一下,各種說法都有,這個問題似乎總困擾我們Java初學者,無奈,只好自己試了一下,以下是我的測試代碼,如果有錯誤,還望不吝賜教!
使用eclipse默認的vm arguments,運行以下代碼:
public static void main(String[] args) {
byte[] array=new byte[61858764];
// short[] shortArray=new short[30929382];
// int[] intArray=new int[15464691];
// long[] longArray=new long[7732345];
}
成功,沒有報錯,可知在eclipse默認的vm arguments下,byte數組的最大長度是61858764,將近60M。
由於short的長度比byte大一倍,所以short數組的最大長度是30929382,是byte數組最大長度的一半,
以此類推,int數組最大長度是15464691,long數組最大長度是7732345
我以為這就是最終結果,後來突然想起修改虛擬機的最大內存,也是這個結果嗎?
我把eclipse的vm arguments設置修改為:-Xms256M -Xmx768M
再次測試代碼,發現byte數組的最大長度可以更長,
通過Windows任務管理器可知,運行代碼的javaw.exe進程佔用的內存也更大(廢話,呵呵)
到此為止,應該可以得出結論,通過修改虛擬機的最大內存,java整型數組的最大長度可以很長,但到底有多長?(肯定比內存小)
我試過定義一個byte數組的長度為618587640,將近600M,沒有報錯,更長的數組似乎沒有意義,我也沒有測試。
ps:以上測試,我只是定義這麼長的數組,並沒有對這些數組進行操作, 所以不敢保證實際操作數組時不報錯(我偷懶了)
而且,我只是對整型數組進行測試,沒有對其他類型數組測試,不敢保證其他類型數組是否也符合這個結論 (又偷懶了)
如果有錯誤,希望大家指出來,不要客氣!
JAVA怎樣獲取數組長度
java list得到屬豬長度的方法如下:
1 java中的length屬性是針對數組說的,比如說你聲明了一個數組,想知道這個數組的長度則用到了length這個屬性.
2 java中的length()方法是針對字符串String說的,如果想看這個字符串的長度則用到length()這個方法.
3.java中的size()方法是針對泛型集合說的,如果想看這個泛型有多少個元素,就調用此方法來查看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
String []list={“ma”,”cao”,”yuan”};
String a=”macaoyuan”;
System.out.println(list.length);
System.out.println(a.length());
ListObject array=new ArrayList();
array.add(a);
System.out.println(array.size());
}
輸出的值為:
3
9
1
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/200170.html