jjzjj

stringbuilder

全部标签

java - 创建了多少个对象

我正在讨论Java中String和StringBuffer的用法。这两个示例分别创建了多少个对象?示例1:Strings="a";s=s+"b";s=s+"c";示例2:StringBuildersb=newStringBuilder("a");sb.append("b");sb.append("c");在我看来,Ex1将创建5个对象,而Ex2将创建4个对象。 最佳答案 我使用内存分析器来获取准确的计数。在我的机器上,第一个示例创建了8个对象:Strings="a";s=s+"b";s=s+"c";String类型的两个对象;Str

java - 为什么 StringBuilder 不打印?

为什么StringBuilder在一小段代码中不打印它应该打印的内容publicfinalclassTest1{publicvoidtest(){System.out.println(setFin().toString());}protectedStringBuildersetFin(){StringBuilderbuilder=newStringBuilder();try{builder.append("John");returnbuilder.append("Ibrahim");}finally{System.out.println("Infinaly");//builder.ap

java - String 和 StringBuilder 的区别及其内部组织

这是一个非常基本的问题。我所知道的答案的范围是字符串是不可变的。Stringbuilders不是,因此您可以在末尾附加字符。那么stringbuilders内部是如何组织的?字符串是一个字符数组。StringBuilder也是字符数组吗?所以,我有一个StringBuilderMY_OBJ="Hello"。现在,如果我尝试将字符附加到MY_OBJ的末尾,这是否意味着您实际上正在创建一个新的数组对象并将所有这些字符复制到一个新的对象中?如果是这样,它如何比字符串更有效?我想到的另一个问题是,如何标记StringBuilder的结束?像在C中一样,我们使用“/0”

Java降低CPU使用率

问候-我们在工作中遇到了一些喜欢使用的疯子while(true){//Code}在他们的代码中。正如您可以想象的那样,这会最大限度地利用CPU。有谁知道降低CPU使用率以便其他人也可以使用服务器的方法。代码本身只是不断地轮询互联网以获取网站上的更新。因此我想稍微sleep的方法会大大降低CPU使用率。此外,所有操作都是在String对象(Java)中完成的,有人知道StringBuilder会减少多少开销吗?感谢指点 最佳答案 很多关于StringBuilder的“民间智慧”都是不正确的。例如,改变这个:Strings=s1+":"

静态上下文中的 Java 方法调用链接

在StringBuilder类中我可以这样做:StringBuildersb=newStringBuilder();sb.append("asd").append(34);append方法返回StringBuilder实例,我可以继续调用它。我的问题是可以在静态方法上下文中这样做吗?没有类实例 最佳答案 是的。像这样(未经测试)。publicclassStatic{privatefinalstaticStaticINSTANCE=newStatic();publicstaticStaticdoStuff(...){...;retur

java - String、StringBuffer 和 StringBuilder 之间的性能和简单性权衡

您是否考虑过Java编程语言的这一变化的含义?String类被认为是一个不可变的类(这个决定是经过深思熟虑的)。但是字符串连接真的很慢,我自己对它进行了基准测试。于是StringBuffer诞生了。真的很棒的类(class),同步而且非常快。但是有些人对某些同步块(synchronizedblock)的性能成本不满意,于是引入了StringBuilder。但是,当使用String连接不多的对象时,类的不变性使其成为实现线程安全的一种非常自然的方式。当我们要管理几个String时,我可以理解StringBuffer的使用。但是,这是我的第一个问题:例如,如果您要附加10个或更少的字符串,

java - 在 Java 8 中,如何从 ArrayList 获取字符串值并将它们存储在以逗号分隔的单个字符串中?

我有一个带有一些字符串的ArrayList。我想将ArrayList中的数字列表存储在单个字符串中,用逗号分隔,如下所示。Strings="350000000000050287,392156486833253181,350000000000060764"这是我的list:Liste=newArrayList();e.add("350000000000050287");e.add("392156486833253181");e.add("350000000000060764");我一直在尝试通过以下方式做到这一点:StringBuilders=newStringBuilder();for

java - 运行时字符串连接评估

根据JLS(15.28ConstantExpressions)Anexpressioncontainingonly:i)LiteralsofprimitivetypeandliteralsoftypeString(§3.10.1,§3.10.2,§3.10.3,§3.10.4,§3.10.5)orii)Simplenames(§6.5.6.1)thatrefertoconstantvariables(§4.12.4).oriii)...是常量表达式。现在Strings1="a"+"b";是一个常量表达式,将在编译时计算为"ab"。所以s1="ab";[1]我说的对吗,根据上面的说法,字

java - 如何使用 RESTEasy 访问 HTTP 请求的主体

我正在寻找一种直接访问HTTP请求正文的方法。事实上,在我的代码中,我在正文中收到了不同的参数,而且我事先并不知道我会收到什么。此外,我希望尽可能灵活:我正在处理可能会有所不同的不同请求,并且我希望针对每种类型的请求(GET、POST、...)使用一种方法来处理它们。有没有一种方法可以使用RESTEasy处理这种级别的灵active?我应该换成别的东西吗? 最佳答案 根据thisanswer中给出的代码您可以访问HTTPServletRequest对象。一旦你有了HTTPServletRequest对象,你应该能够像往常一样访问请求

Java类常量池重复?

我用javap反编译了一个类,我在常量池部分看到了一些重复项,如下所示:#19=Class#350//java/lang/StringBuilder...Someotherclassconstantshere#318=Class#350//java/lang/StringBuilderMethodrefs仅引用其中一个:#20=Methodref#19.#351//java/lang/StringBuilder."":()V#22=Methodref#19.#353//java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/la