概述
您可能需要新的String(String)的一个地方是强制子字符串复制到一个新的底层字符数组,如
small=new String(huge.substring(10,20))
然而,这种行为是不幸的是没有记录和实现依赖。
我读到大文件(一些高达20 MiB)成一个字符串,并将其刻成线后,事实已被烧毁了。我结束了引用包含整个文件的char []的行的所有字符串。不幸的是,无意中保持了对整个数组的引用,我持有的几行比处理文件更长的时间 – 我被迫使用新的String()来解决它。
唯一的实现不可知的方法是:
small=new String(huge.substring(10,20).toCharArray());
这不幸的是必须复制数组两次,一次forCharArray()和一次在String构造函数。
需要有一个文档化的方式来通过复制一个现有的字符串来获得一个新的字符串;或String(String)的文档需要改进,使其更加明确(有一个暗示,但它是相当模糊和开放解释)。
假设文件不陈述的缺陷
回应意见,进来,观察Apache Harmony实现新的String()是什么:
public String(String string) {
value = string.value;
offset = string.offset;
count = string.count;
}
没错,没有底层数组的副本。但是,它仍然符合(Java 7)String文档,因为它:
Initializes a newly created String object so that it represents the same sequence of characters as the argument; in other words, the newly created string is a copy of the argument string. Unless an explicit copy of original is needed, use of this constructor is unnecessary since Strings are immutable.
显着片是“参数字符串的副本”;它不会说“参数字符串的副本和支持字符串的底层字符数组”。
小心你编程文档而不是一个实现。
最后
以上就是高挑太阳为你收集整理的java中new string()_Java中的表达式“new String(…)”的用途是什么?的全部内容,希望文章能够帮你解决java中new string()_Java中的表达式“new String(…)”的用途是什么?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复