前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java中的stringbuffer是什么_java中&和&&的区别

java中的stringbuffer是什么_java中&和&&的区别

作者头像
全栈程序员站长
发布于 2022-11-08 05:41:21
发布于 2022-11-08 05:41:21
9570
举报

大家好,又见面了,我是你们的朋友全栈君。

JAVA提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。

这个String类提供了不可改变的字符串。

而这个StringBuffer类提供的字符串可以进行修改。

String: 为不可变对象,一旦被创建,就不能修改它的值. 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.

StringBuffer: 是一个可变 ,当对他进行修改的时候不会像String那样重新建立对象 它只能通过构造函数来建立, StringBuffer ss = new StringBuffer(); 注意:不能通过赋值符号对他进行付值. ss = “w!”;//error 对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer 中付值的时候可以通过它的append方法. ss.append(“w!”);

地址不可更改,长度和内容可改。append()方法是追加,超过预留内存时,内存翻倍。

效率比较:StringBuffer比String高。因为StringBuffer有预留空间一直追加,只是对一个对象进行操作。而String是不能被修改的,只能重复的去创建对象来实现修改。——如果频繁的对字符串进行追加、替换、修改、插入、删除操作,最好使用StringBuffer。如果必须用String可以使用StringBuffer调用toString()来转换成String即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/191133.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月21日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java String和StringBuffer的区别
String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.String 是final类,即不能被继承.
用户7886150
2021/02/26
4700
java string与stringbuffer的区别_string类和stringbuilder类的区别
简单地说,就是一个变量和常量的关系。StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。
全栈程序员站长
2022/09/30
2700
string和stringbuffer的区别面试题_stringbuffer转为string
字符串连接操作中StringBuffer的效率要明显比String高; String对象是不可变对象,每次操作String都会建立新的对象来保存新的值。 StringBuffer对象实例化后,只对这一个对象操作。
全栈程序员站长
2022/08/02
2550
java中的stringbuffer是什么_java string类
区别一:在Java中字符串使用String类进行表示,但是String类表示字符串有一个最大的问题:“字符串常量一旦声明则不可改变,而字符串对象可以改变,但是改变的是其内存地址的指向。”所以String类不适合于频繁修改的字符串操作上,所以在这种情况下,往往可以使用StringBuffer类,即StringBuffer类方便用户进行内容修改,
全栈程序员站长
2022/11/08
4670
StringBuffer与StringBuilder的区别_String
因为String是不可变的,StringBuffer 和 StringBuilder 它们都是可变的字符串,不过它们之间的区别是 Java 初中级面试出现几率十分高的一道题。这么简单的一道题,栈长在最近的面试过程中,却经常遇到很多求职者说反,搞不清使用场景的情况。
全栈程序员站长
2022/09/29
2500
StringBuffer与StringBuilder的区别_String
图析:String,StringBuffer与StringBuilder的区别
字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。
全栈程序员站长
2022/09/07
2810
图析:String,StringBuffer与StringBuilder的区别
String、StringBuffer与StringBuilder之间区别
简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String 。因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
全栈程序员站长
2022/09/07
2750
String、StringBuffer与StringBuilder之间区别
stringbuffer和stringbuilder是什么_Java编程
String底层是一个final类型的字符数组,所以String的值是不可变的,每次对String的操作都会生成新的String对象,造成内存浪费 而StringBuffer和StringBuilder就不一样了,他们两都继承了AbstractStringBuilder抽象类,从AbstractStringBuilder抽象类中我们可以看到
全栈程序员站长
2022/09/29
2820
stringbuffer和stringbuilder是什么_Java编程
String与StringBuffer的区别?
String: 1.String创建的对象是不可变的,一旦创建不可改变 2.对象值可以改变其实是创建了一个新的对象,然后把新的值保存进去(如图1) 3.String类被final修饰,不可以被继承 4.String创建的对象的值存在于常量池,不用的时候不会被销毁 5.String运行时间较长 6.String适用于比较短而小的字符串
全栈程序员站长
2022/11/08
5880
String与StringBuffer的区别?
stringbuffer stringbuilder区别(其他和其它的区别)
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。 而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。而在某些特别情况下, String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成中, String 效率是远要比 StringBuffer 快的: String S1 = “This is only a” + “ simple” + “ test”; StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”); 你会很惊讶的发现,生成 String S1 对象的速度简直太快了,而这个时候 StringBuffer 居然速度上根本一点都不占优势。其实这是 JVM 的一个把戏,在 JVM 眼里,这个 String S1 = “This is only a” + “ simple” + “test”; 其实就是: String S1 = “This is only a simple test”; 所以当然不需要太多的时间了。但大家这里要注意的是,如果你的字符串是来自另外的 String 对象的话,速度就没那么快了,譬如: String S2 = “This is only a”; String S3 = “ simple”; String S4 = “ test”; String S1 = S2 +S3 + S4; 这时候 JVM 会规规矩矩的按照原来的方式去做 在大部分情况下 StringBuffer > String StringBuffer Java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。 StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。 例如,如果 z 引用一个当前内容是“start”的字符串缓冲区对象,则此方法调用 z.append(“le”) 会使字符串缓冲区包含“startle”,而 z.insert(4, “le”) 将更改字符串缓冲区,使之包含“starlet”。 在大部分情况下 StringBuilder > StringBuffer
全栈程序员站长
2022/07/26
2970
stringbuffer stringbuilder区别_javastringbuffer
  String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。
全栈程序员站长
2022/08/03
2510
stringbuffer stringbuilder区别_javastringbuffer
javaweb(5)
String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结。
一朵灼灼华
2022/08/05
6010
Java之StringBuffer,StringBuilder,Math,Date,SimpleDateFormat,UUID,File
java.lang  类 StringBuffer java.lang.Object java.lang.StringBuffer 所有已实现的接口:Serializable, Appendable, CharSequence ---- public final class StringBufferextends Objectimplements Serializable, CharSequence 线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意
二十三年蝉
2018/03/01
8470
Java之StringBuffer,StringBuilder,Math,Date,SimpleDateFormat,UUID,File
String,StringBuffer和StringBuilder的区别及使用场景[通俗易懂]
StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer中的方法大都采用了synchronized 关键字进行修饰,因此是线程安全的,而StringBuilder没有这个修饰,可以被认为是线程不安全的。StringBuilder 是在JDK1.5才加入的。jdk的实现中StringBuffer与StringBuilder都继承自AbstractStringBuilder。 1、String类型的字符串对象是不可变的,一旦String对象创建后,包含在这个对象中的字符系列是不可以改变的,直到这个对象被销毁。 2、StringBuilder和StringBuffer类型的字符串是可变的,不同的是StringBuffer类型的是线程安全的,而StringBuilder不是线程安全的 3、如果是多线程环境下涉及到共享变量的插入和删除操作,StringBuffer则是首选。如果是非多线程操作并且有大量的字符串拼接,插入,删除操作则StringBuilder是首选。毕竟String类是通过创建临时变量来实现字符串拼接的,耗内存还效率不高,怎么说StringBuilder是通过JNI方式实现终极操作的。 4、StringBuilder和StringBuffer的“可变”特性总结如下: (1)append,insert,delete方法最根本上都是调用System.arraycopy()这个方法来达到目的 (2)substring(int, int)方法是通过重新new String(value, start, end – start)的方式来达到目的。因此,在执行substring操作时,StringBuilder和String基本上没什么区别。 总的来说,三者在执行速度方面的比较:StringBuilder > StringBuffer > String。
全栈程序员站长
2022/11/08
4760
java StringBuffer和StringBuilder
java中的字符串是不可变的,每一次拼接都会产生新字符串。 这样会占用大量的方法区内存。造成内存空间的浪费。
全栈程序员站长
2022/09/09
3120
String、StringBuilder、StringBuffer区别;String底层详解,实例化、拼接、比较;String为什么不可变
String是Java中的一个内置类,Immutable不可变,即一旦创建String对象,它的值就不能被更改。对String对象的replace、subString、toLowerCase等操作都会返回一个新String对象,故每次操作String时 性能较低、浪费内存空间
寻求出路的程序媛
2024/04/21
2860
String、StringBuilder、StringBuffer区别;String底层详解,实例化、拼接、比较;String为什么不可变
stringbuild和stringbuffer的区别_string和stringbuilder的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。另外,String实现了equals方法,new String(“abc”).equals(new String(“abc”)的结果为true,而StringBuffer没有实现equals方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为false。
全栈程序员站长
2022/11/08
6600
知识改变命运 第九集:认识Java中的Sting类
**前言:**我们先思考一个问题,在c语言中有字符串类型吗?答案是没有的,这时候有人问明明有啊?
用户11319080
2024/10/17
800
知识改变命运 第九集:认识Java中的Sting类
Java从入门到精通六(java中的字符串变量String,StringBuilder,StringBuffer)
首先我们认识到java中的数据类型分为基本数据类型和引用数据类型。基本数据类型分为数值,字符,布尔,而引用数据类型分为类,接口,数组。 String是属于引用数据类型的。因为String本身就是一个类 需要了解基本数据类型和引用数据类型的区别。基本数据类型是直接存储在内存的栈上的,引用数据类型继承自Object类,按照对象的内存模式进行存储。我们的引用存放在内存的栈上,而对于对象本身的值存放在内存的堆上。我们java中通过new出来的对象就会存放在堆中。
兰舟千帆
2022/07/16
1.5K0
Java从入门到精通六(java中的字符串变量String,StringBuilder,StringBuffer)
Java中的String类与StringBuilder、StringBuffer的比较:缺点与解决办法
在Java编程语言中,String类是一个非常常用和重要的类。它代表字符串,并提供了许多操作和处理字符串的方法。然而,String类也存在一些缺点。在本文中,我们将详细讲解String类的缺点,并结合具体案例提供相应的解决办法。
GeekLiHua
2025/01/21
1210
推荐阅读
相关推荐
java String和StringBuffer的区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档