8

关于StringBuilder创建对象的问题

 3 years ago
source link: https://bbs.csdn.net/topics/399173450
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

关于StringBuilder创建对象的问题

String s1=“a”; s1=new StringBuilder("a").appent("b").toString();
以上内容在执行过程中创建了几个对象

四个,1: "a" , 2: new StringBuilder , 3:"b" , 4: "ab"

四或者五个 。
String s1=“a”创建两个,常量池一个(有则不创建),堆一个
new StringBuilder("a")产生“a” 一个
new StringBuilder("a").appent("b") 产生“ab”一个
toString()产生 “新ab”

引用 2 楼 滚动的薯条 的回复:

四或者五个 。
String s1=“a”创建两个,常量池一个(有则不创建),堆一个
new StringBuilder("a")产生“a” 一个
new StringBuilder("a").appent("b") 产生“ab”一个
toString()产生 “新ab”

String s1="a";不应该是1个对象吗,s1不应该是对象吧

引用 3 楼 学习至死qaq 的回复:

Quote: 引用 2 楼 滚动的薯条 的回复:

四或者五个 。
String s1=“a”创建两个,常量池一个(有则不创建),堆一个
new StringBuilder("a")产生“a” 一个
new StringBuilder("a").appent("b") 产生“ab”一个
toString()产生 “新ab”

String s1="a";不应该是1个对象吗,s1不应该是对象吧

String s1=“a”的创建逻辑是
先生成一个String对象,然后去找字符串常量池是不是有a这个值,
如果有,则直接拿;如果没有则去创建一个char[]对象,将1这个值存进去,并将1存到常量池中。
也就是说会生成一个char[]对象和一个string对应的instanceOOP

引用 4 楼 滚动的薯条 的回复:

Quote: 引用 3 楼 学习至死qaq 的回复:

Quote: 引用 2 楼 滚动的薯条 的回复:

四或者五个 。
String s1=“a”创建两个,常量池一个(有则不创建),堆一个
new StringBuilder("a")产生“a” 一个
new StringBuilder("a").appent("b") 产生“ab”一个
toString()产生 “新ab”

String s1="a";不应该是1个对象吗,s1不应该是对象吧

String s1=“a”的创建逻辑是
先生成一个String对象,然后去找字符串常量池是不是有a这个值,
如果有,则直接拿;如果没有则去创建一个char[]对象,将1这个值存进去,并将1存到常量池中。
也就是说会生成一个char[]对象和一个string对应的instanceOOP

StringBuilder不应该是对原字符串本身进行操作的嘛,为什么append("b")后创建了一个新的对象"ab"?不应该是"ab"替换之前的"a"吗

引用 5 楼 学习至死qaq 的回复:

Quote: 引用 4 楼 滚动的薯条 的回复:

Quote: 引用 3 楼 学习至死qaq 的回复:

Quote: 引用 2 楼 滚动的薯条 的回复:

四或者五个 。
String s1=“a”创建两个,常量池一个(有则不创建),堆一个
new StringBuilder("a")产生“a” 一个
new StringBuilder("a").appent("b") 产生“ab”一个
toString()产生 “新ab”

String s1="a";不应该是1个对象吗,s1不应该是对象吧

String s1=“a”的创建逻辑是
先生成一个String对象,然后去找字符串常量池是不是有a这个值,
如果有,则直接拿;如果没有则去创建一个char[]对象,将1这个值存进去,并将1存到常量池中。
也就是说会生成一个char[]对象和一个string对应的instanceOOP

StringBuilder不应该是对原字符串本身进行操作的嘛,为什么append("b")后创建了一个新的对象"ab"?不应该是"ab"替换之前的"a"吗

append("b")确实不会产生新的对象,同toString才会,new StringBuilder("a")会产生两个对象一个String a和StringBuilder,
引用 1 楼 得一以生 的回复:

四个,1: "a" , 2: new StringBuilder , 3:"b" , 4: "ab"

这个是正解

引用 2 楼 滚动的薯条 的回复:

四或者五个 。
String s1=“a”创建两个,常量池一个(有则不创建),堆一个
new StringBuilder("a")产生“a” 一个
new StringBuilder("a").appent("b") 产生“ab”一个
toString()产生 “新ab”

String s1 = "a";应该只创建一个在常量池,new String ("a");才是在常量池没有"a"对象的时候创建两个,有的话创建一个

引用 1 楼 得一以生 的回复:

四个,1: "a" , 2: new StringBuilder , 3:"b" , 4: "ab"

Stringbuilder不应该是对原字符串本身进行操作的嘛,为什么append("b")后创建了一个新的对象"ab"?不应该是"ab"替换之前的"a"吗

匿名用户不能发表回复!

关于Java String对象创建问题解惑_?Briella的博客

StringBuilder sb = new StringBuilder(""); for(int i=0; i < 10000000; i++) sb.append(String.valueOf(i)); s = s.substring(2, 5); 结论:创建了一个String对象 也许有很多人一开始就认为这条语句是创建了一个String...

关于Java String对象创建问题解惑_sun_abc的专栏

StringBuilder sb = new StringBuilder(""); for(int i=0; i < 10000000; i++) sb.append(String.valueOf(i)); s = s.substring(2, 5); 结论:创建了一个String对象 也 许有很多人一开始就认为这条语句是创建了一个Str...

JAVA针对String创建对象问题总结

JAVA针对String创建对象问题总结 情景一: 1 String a1= "aa" ; //会在 常量池(pool)中不存在的情况下,常量池创建一份, 2 String a2=new String ("a1");//new关键字,是对堆的操作,在堆中创建一个。常量池中...

有关String类创建几个对象问题

创建了几个String对象? 涉及内容: 引用变量与对象的区别; 字符串文字"abc"是一个String对象; 文字池(pool of literal strings)和堆(heap)中的字符串对象。 1、引用变量与对象: A ...

关于Java String对象创建问题解惑_oracs的专栏

StringBuilder sb = new StringBuilder(""); for(int i=0; i < 10000000; i++) sb.append(String.valueOf(i)); s = s.substring(2, 5); 结论:创建了一个String对象也许有很多人一开始就认为这条语句是创建了一个String...

java 新建string_java String 对象的创建问题_malartin...

StringBuilder sb = new StringBuilder(""); for(int i=0; i < 10000000; i++) sb.append(String.valueOf(i)); s = s.substring(2, 5); 结论:创建了一个String对象 也许有很多人一开始就认为这条语句是创建了一个String...

String 创建对象问题

# String 创建对象问题 一、String、StringBuffer、StringBuilder区别 都是final类,不可被继承。 对比,如下表: String StringBuffer StringBuilder 对象类型 字符串常量(由final修饰) 字符串变量 字符...

关于String创建对象每次改变都需要创建新空间的问题,可以使用String工具类的方法向已创建的空间里添加...

Jdk1.1推出StringBuffer对象,就是频繁字符串拼接。 Jdk1.5推出StringBuidler对象,更快字符串拼接。...StringBuilder sbu = new StringBuilder(); sbu.append(“要拼接的字符串”); StringBuffer方法同上。 ...

关于String对象的创建_weixin_43786976的博客

有人说是由StringBuilder创建的,我也不知道是真是假System.err.println(s2==s3);//false 证明运行期创建的是2个对象 对比下下面这个 finalString s0="123";String s1="sss"+"123";String s2="sss"+s0;String s3="sss"+s0;...

关于Java String对象创建问题解惑_weixin_33894640的博客

StringBuilder sb = new StringBuilder(""); for(int i=0; i < 10000000; i++) sb.append(String.valueOf(i)); s = s.substring(2, 5); 结论:创建了一个String对象 也许有很多人一开始就认为这条语句是创建了一个String...

关于Java String对象创建问题解惑

本文为原创,如需转载,请注明作者和出处,谢谢! 先看看下面的代码 <!--<br /> <...Code highlighting produced by Actipro CodeHighlighter (freeware)&...br /...

java中创造了几个对象_java中StringBuilder.appent方法创建几个对象

在Java中StringBuilder是继承AbstractStringBuilder,在AbstractStringBuilder是byte[] value; 存放字符内容public AbstractStringBuilder append(String str) {if (str == null) {return appendNull();}int len = ...

第十四天-Java String字符串类应用/StringBuilder对象创建和方法的应用

创建String类型对象的几种方法 \转义字符 String的equals方法 String的charAt方法 String的startsWith和endWith方法 String的equalsIgnoreCase忽略大小写进行比较的方法 字符串一经创建在jvm内存中是不能...

JavaSE(二十五)——String与StringBuffer、StringBuilder的区别、创建对象的几种方法、Http和Https的区别

文章目录1、String、StringBuffer、StringBuilder的区别 1、String、StringBuffer、StringBuilder的区别 (1)String是长度不可变的字符序列 (2)StringBuffer和StringBuilder是长度可变的字符序列容器 (3)单线程...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的...

StringBuilder对象的使用

将”goOd gooD stUdy dAy dAy up” 每个单词的首字母转换成大写其余还是小写字母(不许直接输出good good study day day up 要用代码实现) public static void main(String[] args) { String str = "...

java中stringbuilder创建stringbuilder的添加和反转,stringbuilder与string的相互转换

1.stringbuilder创建 import java.util.Scanner; /* stringbuilder的构造方法: ...创建一个空白可变字符串对象,不含任何内容; 2)StringBuilder sb= new StringBuilder(String s); */ publ...

stringbuilder用法 java_Java StringBuilder的用法示例

StringBuilder简介StringBuilder 最早出现在JDK1.5,是一个字符拼接的工具类,它和StringBuffer一样都继承自父类AbstractStringBuilder,在AbstractStringBuilder中使用char[] value字符数组保存字符串,但是没有用...

String创建了几个对象

1.String创建对象问题 1.1 字符串常量池 定义:jvm针对字符串存储的一个特定内存区域。且里面内容都具有唯一性 1.2 创建对象单个说明 **(1).String s = “abc”;**在创建这个对象时,会在常量池中看有没有abc这个...

StringBuilder和StringBuffer区别以及原理

StringBuilder和StringBuffer用法都是一样,几乎没啥区别。但是说它们之间到底有没有区别,那肯定是有的。StringBuffer的大多数方法都是用synchronized 修饰的,所以StringBuffer是线程安全的,但是就因为它被修饰了...

StringBuilder详解

首先就是创建Stringbuilder对象 StringBuilder sbuilder =new StringBuilder(); 我们来做个简单的对比:连接字符串 StringBuilder StringBuilder sbuilder=new StringBuilder(); sbuilder.Ap...

java equals StringBuilder对象对比返回false

以前一直认为equals比较两个对象是不相等,首先比较类型,再对比值,然而不是。 equals对比,首先对比的是获取到的hashcode值,再进行内容比较。 String a = "小乔"; String b = new String("小乔"); System.out...

StringBuilder问题

StringBuilder问题

StringBuilder转Json遇到的坑,创建ES索引报index patterns are missing异常

org.json使用的时候,想把jsonString转jsonObject;...但是如果用new JsonObject(StringBuilder),转换成的json为空。 测试代码如下: public class Test { public static void main(String[] args) { Stri...

C#StringBuilder三种创建方法,常用方法

1,Append()方法,给当前字符串追加一个字符 2,Insert()追加特定格式的字符串 ...5,ToString()把当前stringBuilder中存储的字符串,提取成一个不可变的字符串 static void Main(string[] args) ...

String、StringBuffer与StringBuilder之间区别

StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间 StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的...

Java中String创建对象过程及其运算原理

一、String类的常见问题题解析 ,1.1、new String(“hello”)创建了几个对象   不考虑其他因素,String b = new String(&amp;amp;amp;amp;quot;hello&amp;amp;amp;amp;quot;);这行代码到底创建...

什么情况下用+运算符进行字符串连接比调用StringBuffer/StringBuilder对象的append方法连接字符串性能更好...

做String拼接时用StringBuilder(或StringBuffer)好还是直接用+号性能好?一般来说是前者,不过也有用加号略好的时候。 首先我一直认为用+号有很好的可读性,而且当String拼接在一个等式时,即形如 String s = “abc...

史上最全面Java面试汇总(面试题+答案)

JAVA面试精选【Java基础第一部分】 JAVA面试精选【Java基础第二部分】 JAVA面试精选【Java基础第三部分】 JAVA面试精选【Java算法与编程一】 JAVA面试精选【Java算法与编程二】 ...Java高级工程师—面试(1) ...

关于String、StringBuffer、StringBuilder的区别

最近看到了一道题目: 正确答案:C 下面就这题的其他选项给出解析: String String不可变!先来看看String的源码: public final class String implements Serializable, Comparable<String>...

面试题系列第8篇:谈谈String、StringBuffer、StringBuilder的区别?

关于字符串的面试题除了内存分布、equals比较,最常见的就是与StringBuffer和StringBuilder之间的区别了。 如果你回答:String类是不可变的,StringBuffer和StringBuilder是可变类,StringBuffer是线程安全的,...

字符串的创建到底有几个对象产生

字符串的创建到底有几个对象产生 直接使用字面量 String a = "98374"; 这种情况下,在编译时就对常亮池进行判断是否存在该字符串.编译期的常亮池是静态常亮池,如果不存在该字符串,则在常量池中创建该字符串...

关于创建String对象过程的内存分配

关于创建String对象过程的内存分配 常量池(Constant Pool):指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。JVM虚拟机为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个...

【扯皮系列】一篇与众不同的 String、StringBuilder 和 StringBuffer 详解

字符串使用 String 来表示,字符串一旦被创建出来就不会被修改,当你想修改 StringBuffer 或者是 StringBuilder,出于效率的考量,虽然 String 可以通过 + 来创建多个对象达到字符串拼接的效果,但是这种拼接的效率...

String对象创建详解

网上对于String对象的创建说的五花八门,各有各的说法,越看越懵逼,所以...2.String的引用,也可理解为指针,是不算创建对象的。不知道怎么解释,引用是放在java栈里的,为什么就不算创建呢。然后我们再来看String...

关于 String、StringBuffer、StringBuilder 的常见面试题

目录String创建方式一方式二方式三最大长度拼接方式一方式...字符串常量池如果有 “xxx”,不创建对象;如果没有,在字符串常量池创建"xxx"。 方式二 String str = new String("xxx"); 字符串常量池如果有 “xxx”,创

相关热词 c# 正则表达式api c# ip地址 ping c# sync c#-定时关闭进程 queue在c# c# 循环执行异步 c#定时作业调度 c# 不同框架之间的引用 c# 项目类库 c#使用excel引用

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK