一个简单的问题:Java中String
对象的最大大小(以字节或字符为单位)是什么?
一些背景信息:我想构建一个SQL语句(INSERT INTO tbl VALUES (...), (...), ...
),我不想超过对象的大小。
答案 0 :(得分:6)
字符串包含一个字符数组,因此我认为Java字符串中最多只能有2^31 - 1
个字符。这是Integer.MAX_VALUE
的值。
任何大于此的字符串,您甚至无法索引所有元素。
答案 1 :(得分:2)
来自源代码
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和可用内存的最小值
答案 2 :(得分:1)
理论上它可能是Integer.MAX_VALUE chars long。
答案 3 :(得分:1)
听起来你想插入很多行。使用PreparedStatement
和批处理参数。 https://stackoverflow.com/a/3786127/1172714。
请注意,将SQL语句组装为String
是一种危险的做法。而是使用准备好的声明http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html