Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中大字符串的唯一字符串对象_Java_String - Fatal编程技术网

Java中大字符串的唯一字符串对象

Java中大字符串的唯一字符串对象,java,string,Java,String,在内存管理和性能方面,在一个单独的字符串对象中存储一个大字符串(超过300000个字符)是一种好的做法还是有更好的方法 Java使用UTF-16编码表示字符串,因此在最坏的情况下,每个字符都是4字节。这将为您提供一个大约为4*300000/1024/1024~1.14MB的字符串,它本身并不坏 使用字符串的方式决定了练习。Johan Sjöberg的解释很好: “如何使用字符串将决定实践。” 如果组成字符串对象的300000个字符没有驻留在双引号(“”)中的Java源文件中,例如驻留在外部文件中

在内存管理和性能方面,在一个单独的字符串对象中存储一个大字符串(超过300000个字符)是一种好的做法还是有更好的方法

Java使用
UTF-16
编码表示字符串,因此在最坏的情况下,每个字符都是
4
字节。这将为您提供一个大约为
4*300000/1024/1024~1.14MB的
字符串,它本身并不坏


使用字符串的方式决定了练习。

Johan Sjöberg的解释很好:

“如何使用字符串将决定实践。”

如果组成字符串对象的300000个字符没有驻留在双引号(“”)中的Java源文件中,例如驻留在外部文件中,则可以使用不同的技术逐块或整体获取字符串内容。看看这个例子:

FileInputStream fis = new FileInputStream( "yourFile.txt" );
BufferedInputStream bis = new BufferedInputStream( fis );
byte [] buffer = new byte [ 8 ];
int bytesRead = 0;
String chunk = "";

while ( ( bytesRead = bis.read( buffer ) ) != -1 )
    chunk = new String( buffer, 0, bytesRead );
假设您处理了可能的异常,在上面的代码中,每次进入while循环时都会得到一个大小为8字节的字符串。因此,通过修改字节数组的大小(在这段代码中为8),您可以更改块大小,并在其他任何地方使用块,打印它们等等

在您的示例中,您说您的字符串大约有300000个字符。因此,将字节数组
缓冲区的大小设置为4x300000=1200000将使您能够获得包含所有字符的单个字符串块