概述
小编典典
你可能需要的一个地方new String(String)是强制子字符串复制到新的基础字符数组,如
small=new String(huge.substring(10,20))
但是,不幸的是,此行为是未记录的,并且取决于实现。
当将大文件(最多20 MiB)读入字符串并在事后将其刻成几行时,我对此感到非常恼火。我最后得到了引用由整个文件组成的char []的所有字符串。不幸的是,与处理文件相比,我无意间对整个数组的引用保留了更长的时间,这比处理文件要更长的时间-我被迫用来new String()解决该问题。
唯一与实现无关的方法是:
small=new String(huge.substring(10,20).toCharArray());
不幸的是,这必须将数组复制两次,toCharArray()一次在String构造函数中一次。
需要有一种通过复制现有字符串的字符来获取新String的文档化方法;或String(String)需要改进的文档以使其更明确(此处有隐含含义,但相当含糊且易于解释)。
假设文档没有陈述的陷阱
为了回应不断出现的评论,请观察Apache Harmony的实现new String()是:
public String(String string) {
value = string.value;
offset = string.offset;
count = string.count;
}
没错,那里没有底层数组的副本。但是,它仍然符合(Java 7)字符串文档,因为它:
初始化一个新创建的String对象,使其表示与参数相同的字符序列;换句话说,新创建的字符串是参数字符串的副本。除非需要显式的原始副本,否则不需要使用此构造函数,因为字符串是不可变的。
突出的部分是“参数字符串的副本”;它不会说“参数字符串和支持该字符串的基础字符数组的副本”。
请注意,你应按照文档而不是一种 实现编程。
2020-02-27
最后
以上就是粗心芝麻为你收集整理的java new string作用,Java中“ new String(…)”表达式的目的是什么?的全部内容,希望文章能够帮你解决java new string作用,Java中“ new String(…)”表达式的目的是什么?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复