一个简单的问题:String
Java 中对象的最大大小(以字节或字符为单位)是多少?
一些背景信息:我想构建一个 SQL 语句 ( INSERT INTO tbl VALUES (...), (...), ...
) 并且我不想超过对象的大小。
2^31 - 1
字符串包含一个字符数组,所以我认为Java 字符串中最多可以有字符。这是 的值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 和可用内存的最小值
听起来您想插入很多行。使用 aPreparedStatement
和批处理参数。 https://stackoverflow.com/a/3786127/1172714。
请注意,将 SQL 语句组装为 aString
是一种危险的做法。而是使用准备好的语句http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
理论上它可能是 Integer.MAX_VALUE 字符长。