一个简单的问题: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