首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

String

) 初始化新创建的String对象,新创建的字符串是参数字符串的副本 String(StringBuffer buffer) 其中包含当前包含在字符串缓冲区参数中的字符序列 String(StringBuilder...66行super()默认构造函数使用父类的,默认大小为16,底层也是字符数组 会自动扩容,扩为原数组的2倍加2,这时是创建一个新的数组,并将原数组复制到新数组(与集合扩容类似) ?...线程安全来源于synchronized 常见方法 构造函数 构造函数 解释 StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符 StringBuffer(String str...) 构造一个初始化为指定字符串内容的字符串缓冲区,大小为str.length()+16 StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量 常用方法...,在给参数中的引用类型赋值时,改变的是参数的地址,即不属于引用传递,下面画图更好理解 没加入语句前 ?

50810

java string与stringbuffer的区别_string类和stringbuilder类的区别

StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。...然而,不可改变的字符串具有一个很大的优点:编译器可以把字符串设为共享的。 StringBuffer:StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。...使用该方法进行字符串的连接,将比String更加节约内容,例如应用于数据库SQL语句的连接,例如: StringBuffer sb = new StringBuffer(); String user...3、insert方法 public StringBuffer insert(int offset, String s) 该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。...4、reverse方法 public StringBuffer reverse() 该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。

25520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    第三阶段-Java常见对象:【第四章 StringBuilder、StringBuffer类】

    (一) StringBuffer类 (一) StringBuffer类的概述 (1) 基本概述 下文以StringBuffer为例 前面我们用字符串做拼接,比较耗时并且也耗内存(每次都会构造一个新的string...对于三者使用的总结: 1.如果要操作少量的数据用 = String2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer...(2) StringBuffer的构造方法 (二) StringBuffer 类的功能 (1) 添加功能 //可以把任意类型添加到字符串缓冲区里,并且返回字符串缓冲区本身(this) public...StringBuffer append (String str) //在offset位置把任意类型的数据插入到字符串缓冲区中,并且返回字符串缓冲区本身(this) public StringBuffer...(String类中的 “+”“+=”是java中仅有的两个重载过的运算符) 所以我们可以通过“+”符号 将多个字符串进行拼接 将这段代码利用 javap -c filename 反编译 我们可以看到代码被编译器自动优化成使用

    34440

    Java学习笔记(二)——基础语法

    print Java中也有 printf() 语句,用来控制输出格式,不过实际开发中不常用,因为输出到控制台的数据很少要求严格的格式,一般println() 和 print() 就够了。...StringBuffer类和String类一样,也用来表示字符串,但是StringBuffer的内部实现方式和String不同,在进行字符串处理时,不生成新的对象,在内存使用上要优于String。...StringBuffer 默认分配16字节长度的缓冲区,当字符串超过该大小时,会自动增加缓冲区长度,而不是生成新的对象。...StringBuffer不像String,只能通过 new 来创建对象,不支持简写方式,例如: StringBuffer str1 = new StringBuffer(); // 分配16个字节长度的缓冲区...StringBuffer str2 = =new StringBuffer(512); // 分配512个字节长度的缓冲区 // 在缓冲区中存放了字符串,并在后面预留了16个字节长度的空缓冲区

    55420

    Java中的String,StringBuilder,StringBuffer三者的区别

    首先创建一个String对象str,并把“ABC”赋值给str,然后在第三行中,其实JVM又创建了一个新的对象也名为str,然后再把原来的str的值和“DEF”加起来再赋值给新的str,而原来的str就会被...所以,Java中对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。...StringBuilder的反应速度要快很多,这是因为第1行中的操作和 String str="ABCDEF"; 是完全一样的,所以会很快,而如果写成下面这种形式 String str1="ABC";...线程安全 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有...总结 String:适用于少量的字符串操作的情况 StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况 String

    41830

    Java编程入门(2.4):变量和基本类型

    使用 StringBuilder 类的场景:在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以考虑使用 StringBuilder,如 SQL 语句的拼装、JSON 封装等...而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。...虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。在程序中可将字符串缓冲区安全地用于多线程。...每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。...该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

    44010

    【JavaSE专栏45】Java常用类StringBuffer解析,字符串为什么需要缓存?

    ---- 一、什么是 StringBuffer类 StringBuffer 类是Java中用于处理可变字符串的类。它是一个可变的、线程安全的字符串缓冲区,可以进行动态的字符串操作。...字符串拼接:StringBuffer 类是一个可变的字符串缓冲区,适合用于频繁的字符串拼接操作。...由于 String 对象在每次拼接时都会创建一个新的对象,而 StringBuffer 对象可以直接在原有的缓冲区上进行拼接,避免了频繁的对象创建和销毁,提高了效率。...数据库操作:在进行数据库操作时,需要拼接 SQL 语句,使用 StringBuffer 类可以方便地构建SQL语句,避免了使用字符串拼接操作带来的性能问题。...String 类的操作会产生新的字符串对象,而 StringBuffer 类的操作是在原有对象上进行的,不会产生新的对象,因此更高效。

    18920

    基础篇之二

    两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。...NewString每写一遍,就创建一个新的对象,它使用常量”xyz”对象的内容来创建出一个新String对象。...2、String和StringBuffer的区别   JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。...这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串可以进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。...通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。

    55650

    String、StringBuilder和StringBuffer

    首先创建一个String对象str,并把“abc”赋值给str,然后在第三行中,其实JVM又创建了一个新的对象也名为str,然后再把原来的str的值和“de”加起来再赋值给新的str,而原来的str就会被...所以,Java中对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。   ...StringBuilder的反应速度要快很多,这是因为第1行中的操作和   String str=”abcde”;   是完全一样的,所以会很快,而如果写成下面这种形式 String str1="abc...再来说线程安全 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer...总结一下   String:适用于少量的字符串操作的情况   StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况   StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

    24910

    Java面试题-基础篇四

    两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。...NewString每写一遍,就创建一个新的对象,它使用常量”xyz”对象的内容来创建出一个新String对象。...2、String和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。...这个String类提供了数值不可改变的字符串。 而这个StringBuffer类提供的字符串可以进行修改。 当你知道字符数据要改变的时候你就可以使用StringBuffer。...题目中的第一行代码被编译器在编译时优化后,相当于直接定义了一个”abcd”的字符串,所以,上面的代码应该只创建了一个String对象。

    48530

    Java面试题-基础篇三(干货)

    两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。...NewString每写一遍,就创建一个新的对象,它使用常量”xyz”对象的内容来创建出一个新String对象。...32、String和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。...这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串可以进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。...题目中的第一行代码被编译器在编译时优化后,相当于直接定义了一个”abcd”的字符串,所以,上面的代码应该只创建了一个String对象。

    49110

    2018年百度大神讲解 JAVA基础知识解析(重点)

    5、请说出作用域public,private,protected,以及不写时的区别 这四个作用域的可见范围如下表所示。 说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。...两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。...New String每写一遍,就创建一个新的对象,它一句那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。...s3 = "a" + "b"; System.out.println(s2 == "ab"); System.out.println(s3 == "ab"); 第一条语句打印的结果为false,第二条语句打印的结果为...题目中的第一行代码被编译器在编译时优化后,相当于直接定义了一个”abcd”的字符串,所以,上面的代码应该只创 建了一个String对象。

    62330

    String、StringBuffer与StringBuilder之间区别

    每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量 可变类,速度更快 不可变 可变 可变 线程安全 线程不安全...每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。...这也就是为什么大家说 StringBuffer是可变字符串 的涵义了。从这一点也可以看出,StringBuffer中的value[]完全可以作为字符串的缓冲区功能。...()方法在堆中创建一个新的String对象,其值为刚才字符串的合并结果。...测试②中sb.append(s1);只需要将自己的value[]数组不停的扩大来存放s1即可。循环过程中无需在堆中创建任何新的对象。效率高就不足为奇了。

    25310

    Java中String、StringBuffer和StringBuilder的区别

    “abc”赋值给str,然后在第三行中,其实JVM又创建了一个新的对象也名为str,然后再把原来的str的值和“de”加起来再赋值给新的str,而原来的str就会被JVM的垃圾回收机制(GC)给回收掉了...所以,Java中对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。...image 这样输出结果也是“abcde”和“abcde”,但是String的速度却比StringBuilder的反应速度要快很多,这是因为第1行中的操作和String str="abcde";是完全一样的...再来说线程安全 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer...总结一下  String:适用于少量的字符串操作的情况  StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况  StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

    64520

    StringBuffer与StringBuilder的区别_String

    每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量 可变类,速度更快 不可变 可变 可变 线程安全 线程不安全...我们来看一下这张对String操作时内存变化的图: 我们可以看到,初始String值为“hello”,然后在这个字符串后面加上新的字符串“world”,这个过程是需要重新在栈堆内存中开辟内存空间的...String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。...ch,int chBegin) //将StringBuffer缓冲区中的指定数据存储到指定数组中 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    24340

    充电篇:Java数据类型经典十五问

    错误提示:Error:(21, 17) java: 不兼容的类型: 从int转换到short可能会有损失 运行第二个是正确的,s1=2,+1是int类型的操作,s1自动转换int类型 4、int 和Integer...1、可变与不可变 String:字符串常量,在修改时不改变自身;若修改,等于生成新的字符串对象 StringBuffer:在修改时会改变对象自身,每次操作都是对 StringBuffer 对象本身进行修改...StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较慢,适用于多线程下操作字符串缓冲区大量数据。...对于三者使用的总结 如果要操作少量的数据用 = String 单线程操作字符串缓冲区下操作大量数据 = StringBuilder 多线程操作字符串缓冲区下操作大量数据 = StringBuffer 9...10、switch 语句能否作用在byte 、long 、String 上?

    16640

    String,StringBuffrer,StringBuilder 三兄弟

    str 然后在第三行中,其实JVM又创建一个新对象也名为str 然后再把原来的str的值和“Meow”加起来再赋值给新的str JVM然后就会把原来的str回收掉(垃圾回收机制) 所以,str实际上是并没有被更改...,也就是前面说的String对象一旦创建之后就不可更改了,Java中对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。...: aquanMeow aquanMeow 这里结果都是一样,但是String的速度却要比StringBuilder的反应速度要快很多,这是因为第一行中的操作和 String str = "aquanMeow...那么现在从线程安全来看看着三兄弟的区别 StringBuilder是线程不安全的,而String和StringBuffer是线程安全的 如果一个StringBuffer对象在字符串缓冲区中被多个线程使用时...说了那么多,下面总结下 String:适用于少量的字符串操作的情况下 StringBuilder:适用于 单线程 下字符缓冲区中进行大量操作的情况下 StringBuffer:适用于 多线程 下的字符缓冲区中镜像大量操作的情况下

    42140

    String,StringBuilder和StringBuffer整理汇总

    也由于它的不可变性,类似拼接、裁剪字符串等动作,每次对String的操作都会生成新的 String对象 private final char value[]; StringBuffer是为解决上面提到拼接产生太多中间对象的问题而提供的一个类...与String类不同,StringBuffer和StringBuilder类的对象可以反复修改,而不会留下大量新的未使用对象。...expandCapacity()实现的,在这个方法中首先把把容量变为原来容量的2倍加2,如果此时仍小于指定的容量,那么就把新的容量设为minimumCapacity。...然后继续往下看代码,AbstractStringBuilder类的append()方法中str.getChars(0, len, value, count); 这一行作用是将String对象里面char...; 多线程操作字符串缓冲区下操作大量数据使用StringBuffer; 单线程操作字符串缓冲区下操作大量数据使用StringBuilder。

    3.6K30
    领券