Java中`String`对象的最大大小是多少?

时间:2013-07-11 22:17:00

标签: java string

一个简单的问题:Java中String对象的最大大小(以字节或字符为单位)是什么?

一些背景信息:我想构建一个SQL语句(INSERT INTO tbl VALUES (...), (...), ...),我不想超过对象的大小。

4 个答案:

答案 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