javastring的大小
❶ java string最大長度
String內部是以char數組的形式存儲,數組的長度是int類型,那麼String允許的最大長度就是Integer.MAX_VALUE了。又由於java中的字元是以16位存儲的,因此大概需要4GB的內存才能存儲最大長度的字元串。不過這僅僅是對字元串變數而言,如果是字元串字面量(string literals),如「abc"、"1a2b"之類寫在代碼中的字元串literals,那麼允許的最大長度取決於字元串在常量池中的存儲大小,也就是字元串在class格式文件中的存儲格式:
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
u2是無符號的16位整數,因此理論上允許的string literal的最大長度是2^16-1=65535。然而實際測試表明,允許的最大長度僅為65534,超過就編譯錯誤了.
參考:http://www.blogjava.net/killme2008/archive/2009/01/15/251368.html
❷ Java中String字元串的存儲大小也就是容量是多少呢能存多少字元。
String str="abc...";這樣定義的字元串是存在字元串池中的
String str=new String("abc...")這樣定義的字元串是在堆內存中的,然後被棧內存的對象str引用
所以字元串是對象,是在內存中存儲的,不像基本數據類型有各自的長度,字元串應該是只要是內存不滿,是沒有長度限制的
❸ java中String類型的數據分配多少位元組
Java中無論是漢字還是英文字母都是用Unicode編碼來表示的,一個Unicode碼是16位,每位元組是8位,所以一個Unicode碼占兩位元組。但是英文字母比較特殊,源自於8位(1位元組)的ASCII嗎,於是在Unicode碼僅使用了低8位(1位元組)就可以表示,高8位的話不使用也無所謂。所以
char c='a';
System.out.println(c.getBytes().lenth()),得到的是1(位元組)
但漢字就完整地使用了16位(2位元組)的Unicode,所以
char c='中';
System.out.println(c.getBytes().lenth()),得到的是2(位元組)
綜上,c='a'在內存中確實只佔1位元組,但這不意味著String s="abc"在內存中只佔3位元組。應該這么說,String s="abc"至少在內存中佔3位元組。這是因為char是基本數據類型,而String確是對象類型。
❹ 關於獲取Java的String[]大小問題
String[] day = new String[10];
for(int i =0; i < 10; i++)
day[i] = "day";
System.out.println(day.length);
這樣就可以了
List list = new ArrayList();
for(int i =0; i < 10; i++)
list.add("day");
System.out.println(list.size());
❺ 在Java中String變數的最大長度是多少
u2是無符號的16位整數,因此理論上允許的string literal的最大長度是2^16-1=65535。然而實際測試表明,允許的最大長度僅為65534,超過就編譯錯誤了,有興趣可以寫段代碼試試,估計是length還不能為0。
❻ java中靜態String的最大長度由什麼決定的
看String的源碼:
public final class String
110 implements java.io.Serializable, Comparable<String>, CharSequence
111 {
112 /** The value is used for character storage. */
113 private final char value[];
114
115 /** The offset is the first index of the storage that is used. */
116 private final int offset;
117
118 /** The count is the number of characters in the String. */
119 private final int count;
String內部是以char數組的形式存儲,數組的長度是int類型,那麼String允許的最大長度就是Integer.MAX_VALUE了。又由於java中的字元是以16位存儲的,因此大概需要4GB的內存才能存儲最大長度的字元串。不過這僅僅是對字元串變數而言,如果是字元串字面量(string literals),如「abc"、"1a2b"之類寫在代碼中的字元串literals,那麼允許的最大長度取決於字元串在常量池中的存儲大小,也就是字元串在class格式文件中的存儲格式:
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
u2是無符號的16位整數,因此理論上允許的string literal的最大長度是2^16-1=65535。然而實際測試表明,允許的最大長度僅為65534,超過就編譯錯誤了,有興趣可以寫段代碼試試,估計是length還不能為0。
❼ java中String類型有沒有限制,最大限制是多少
嚴格來說,String確實有長度限制。
String內部使用一個char[]數組來存放字元串的內容,數組下標是整型(也可以參考String的構造方法String(char value[], int offset, int count) ,可以知道字元數量是用整型表示),整型(Java規定32位)表示範圍是2G,也就是說,Java數組最大的長度是2G,即字元串不能超過2G個字元。
Java的數組大小還有沒有別的限制?事實上數組大小不能超過Java堆的大小,而Java堆的最大尺寸可以通過啟動參數指定,如果Java堆開得足夠大,數組的最大長度是可以不斷增大的。
所以,理論上,字元串不能超過2G個字元,少於2G個字元都有可能。
但編碼時有需要注意的地方,採用明文的方式,如果超過65534個位元組,可能報編譯錯誤,可參考下列網站(有一處錯誤,整型考慮到符號位,最大隻到2G)。
❽ java中string能比較大小嗎
字元串的比較用string.compareTo(str);不過不是單純的類似數字的比較大小。具體可以看源碼。
這個方法是作用:
1.從兩個字元串最開始位置匹配到兩個字元串較短的最後,即從0到Math.min(len1, len2),然後獲取每個位置的字元char1和char2,如果char1和char2不想等,返回char1-char2
2.如果0到Math.min(len1, len2)的位置的字元都相等,返回兩字元串長度的差,即length1-length2
具體來說
"a".compareTo("c")、"abc".compareTo("c")都返回-2。上述情況1
"abc".compareTo("abcdefg")返回-4。上述情況2
❾ Java中String類型有沒有長度的限制
嚴格來說,String確實有長度限制。
1、String內部使用一個char[]數組來存放字元串的內容,數組下標是整型(也可以參考String的構造方法String(char value[], int offset, int count) ,可以知道字元數量是用整型表示),整型(Java規定32位)表示範圍是2G,也就是說,Java數組最大的長度是2G,即字元串不能超過2G個字元。
2、Java的數組大小還有沒有別的限制?事實上數組大小不能超過Java堆的大小,而Java堆的最大尺寸可以通過啟動參數指定,如果Java堆開得足夠大,數組的最大長度是可以不斷增大的。
3、所以,理論上,字元串不能超過2G個字元,少於2G個字元都有可能。
❿ java string怎麼比較大小
我是個小白。。。。不太明白直接比較的方法
但可以這樣,你定義兩個INT型數據,讓他們分別等於兩個字元串的長度,再把他們做比較。
例如
String a="asjdgjawdb";
int a2=a.length;
String b="dasuighaisjbi";
int b2=b.length;
之後比較a2與b2就可以啦。