我的问题是,如果我使用StringBuffer(或StringBuilder),如果我在实例上多次调用String方法。StringBuffer 是每次都返回 String 的新实例,还是从 String pool 返回 String?(假设我在两次调用之间没有对StringBuffer进行任何更改)
是的,调用
StringBuffer 和 StringBuilder
的 stringIng
方法将每次都创建一个新的字符串对象,因为这些方法使用 new
关键字返回字符串。
下面是 toString from StringBuffer 类的代码:
public synchronized String toString() {
return new String(value, 0, count);
}
下面是StringBuilder类中的toString方法:
public String toString() {
// Create a copy, don't share the array
return new String(value, 0, count);
}
只有字符串文本放置在字符串常量池中。例如,字符串 s = “abc”;
将在字符串池中,而字符串 s = new String(“abc”)
则不会。toString()
方法创建了一个新字符串,因此返回的字符串不会来自文本池。
每当遇到toString()
方法时,都会创建一个新的String。
仅当您执行以下操作时,才会再次引用字符串常量池对象。
String s = "abc";
String s1 = "abc";
这意味着引用变量 s
和 s1
都将引用常量池中的相同 abc
文本。
您可以在此处找到有关字符串常量池的有用文章。http://www.thejavageek.com/2013/06/19/the-string-constant-pool/
根据StringBuffer
的toString()文档
转换为表示此字符串缓冲区中数据的字符串。分配并初始化一个新的字符串对象,以包含该字符串缓冲区当前表示的字符序列。然后返回该字符串。对字符串缓冲区的后续更改不会影响字符串的内容。
因此,分配并初始化了一个新的 String 对象。
通过new运算符分配的String对象
存储在堆中,相同内容不共享存储,其中作为String
文字存储在公共池中。
String s1 = "Hello"; // String literal
String s2 = "Hello"; // String literal
String s3 = s1; // same reference
String s4 = new String("Hello"); // String object
String s5 = new String("Hello"); // String object
其中s1==s2==s3但s4!=s5
我是依赖注入的新手,最近不得不学习Spring和Guice。下面的问题可能很蹩脚。 Spring允许您创建带有@scope(“prototype”)注释的原型对象,这意味着每次都会返回一个新对象 例如在我的Spring容器中:- 并在@AutoWired的所有引用中注入一个新对象a。 但是,在guice注入器中,正在注入相同的实例。看起来guice只提供单例、请求或会话作用域https://git
本文向大家介绍JavaScript中用toString()方法返回时间为字符串,包括了JavaScript中用toString()方法返回时间为字符串的使用技巧和注意事项,需要的朋友参考一下 此方法返回表示指定日期对象的字符串。 语法 下面是参数的详细信息: NA 返回值: 返回表示指定日期对象的字符串 例子: 这将产生以下结果:
问题内容: 我有一个带有参数的方法。 在这种方法中,我完全知道在“ o”中存在一个不为空的值。无需检查或执行其他操作。我必须把它当作一个对象来对待。 只是好奇-什么便宜?将其投放或使用?还是按时间/ CPU /内存价格相同? 更新:该方法可以接受,因为它是接口的实现。无法更改参数类型。 而且根本不可能。我只是想说我不需要检查它是否为空或为空。就我而言,总是有一个非空字符串。 问题答案: 强制转换为
我正在通过SonarLint传递我的代码,我遇到了这个linter违规:上调用。 这是我的代码: SonarLint给出了以下代码片段,作为改进代码的提示: 我应该如何更改代码以满足linter的要求?为什么?
理想情况下,我希望类似于myerrors.bad_file_path-->这样的东西,它返回一个字符串,这样它就不那么冗长了。这有道理吗?
本文向大家介绍java中的 toString()方法实例代码,包括了java中的 toString()方法实例代码的使用技巧和注意事项,需要的朋友参考一下 前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据。 最近项目中需要对一个ArrayList<ArrayList<Integer>> datas 形式的集合处理。 处理要求把集合数