一個簡單的問題:Java中String
對象的最大大小(以字節或字符表示)是多少?Java中String對象的最大大小是多少?
一些背景信息:我想構建一條SQL語句(INSERT INTO tbl VALUES (...), (...), ...
),我不想超出對象的大小。
一個簡單的問題:Java中String
對象的最大大小(以字節或字符表示)是多少?Java中String對象的最大大小是多少?
一些背景信息:我想構建一條SQL語句(INSERT INTO tbl VALUES (...), (...), ...
),我不想超出對象的大小。
字符串包含一個字符數組,所以我認爲在Java String中最多可以有2^31 - 1
個字符。這是Integer.MAX_VALUE
的值。
任何大於此值的字符串,甚至不能索引所有元素。
理論上它可能是Integer.MAX_VALUE字符長。
從源代碼
class String implements java.io.Serializable {
private char value[]; // 4 bytes + 12 bytes of array header
private int offset; // 4 bytes
private int count; // 4 bytes
}
什麼都Integer.MAX_VALUE值的是(這在大多數系統會2^31 -1
)
這需要4GB的內存,但這樣的一個非常大的量( Java使用16位Unicode)
所以Integer.MAX_VALUE的最小和可用內存
這聽起來好像要牛逼o插入許多行。使用PreparedStatement
和批處理參數。 https://stackoverflow.com/a/3786127/1172714。
請注意,組裝SQL語句爲String
是一種危險的做法。而是使用準備好的語句http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
謝謝。我知道這可能是危險的,但這個特定的程序是供我個人使用的,我可以奢侈地「不那麼正式」;-) – Barranka
假設您有足夠的可用內存。 – 2013-07-11 22:18:52
如果我正確地做了數學計算,那一個字符串大概是4GB。 – 2013-07-11 22:21:19