0

一个简单的问题:StringJava 中对象的最大大小(以字节或字符为单位)是多少?

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

4

4 回答 4

7

2^31 - 1字符串包含一个字符数组,所以我认为Java 字符串中最多可以有字符。这是 的值Integer.MAX_VALUE

任何大于此的字符串,您甚至无法索引所有元素。

于 2013-07-11T22:18:33.263 回答
3

从源代码

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 和可用内存的最小值

于 2013-07-11T22:21:44.810 回答
2

听起来您想插入很多行。使用 aPreparedStatement和批处理参数。 https://stackoverflow.com/a/3786127/1172714

请注意,将 SQL 语句组装为 aString是一种危险的做法。而是使用准备好的语句http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

于 2013-07-11T22:39:27.330 回答
1

理论上它可能是 Integer.MAX_VALUE 字符长。

于 2013-07-11T22:20:22.650 回答