String 和 StringBuffrer 的区别
String表示的是字符串常量,String类中内容一旦被初始化,其内容和长度就不能被更改
说到这里,可能有人就会疑惑了 (不是可以通过String类的replace()等方法来改变其内容和长度?)
String str = "abc";
System.out.println(str.replace("b", "12345"));
输出结果:a12345cString str = "abc";
str = "aaaa!";
System.out.println(str);
输出结果:aaaa!
这里的字符串长度和内容不是都已经该变了吗,那岂不是和 String 类的特性相违背了
其实这里的改变并不是真正的改变,改变后的字符串是属于一个新的字符串对象,为什么这样说呢?
因为 String 内部被 final 修饰,在 String 对象初始化时,内存就会为其分配一个空间用于存储它的值,在执行str = “aaaa!”;语句后。内存就会将其作为一个新的 String 对象重新为其分配一处空间来存储它的值,而原来的 String 对象的值还存在于内存中,没有发生任何改变。
那为什么输出的结果是“aaaa!”而不是“abc”?
因为 str 只是一个 String 对象的引用指向,开始时指向"abc"存储地址,在创建了新的String对象后,该指向就指向了这个新的 String 值"aaaa!“的存储地址。所以输出的结果是"aaaa!” 而不是"abc"
String 和 StringBuffrer 的区别
① StringBuffer 类弥补了 String 类的内容不能被修改的这个不足之处,StringBuffer 类(又称字符缓冲区)表示的字符容器,其内容及长度可以被修改的,修改后不会产生新的 StringBuffer 对象.
<f② String 类覆盖了 Object 类的 equals() 方法,而 StringBuffer 类没有.
String s1 = "好好学习!";
String s2 = "好好学习!";
System.out.println(s1.equals(s2));
StringBuffer sb1 = new StringBuffer("天天向上!");
StringBuffer sb2 = new StringBuffer("天天向上!");
System.out.println(sb1.equals(sb2));输出结果:
true
false
③ String 类可以通过 '+'号对两个 String 对象进行拼接,而 StringBuffer 类不可以.
String s1 = "好好学习,";
String s2 = "天天向上!";
System.out.println(s1 + s2); //输出结果:好好学习,天天向上!
StringBuffer sb1 = new StringBuffer("好好学习,");
StringBuffer sb2 = new StringBuffer("天天向上!");
System.out.println(sb1 + sb2); //此处报错
String 和 StringBuffrer 的区别相关推荐
- String与StringBuffer的区别
String与StringBuffer的区别 简单地说,就是一个变量和常量的关系.StringBuffer对象的内容可以修改:而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象. St ...
- String,StringBuffer和StringBuilder区别?
String是字符串常量,final修饰;StringBuffer字符串变量(线程安全);StringBuilder 字符串变量(线程不安全).此外StringBuilder和StringBuffer ...
- JAVA中String与StringBuffer的区别
String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作. 1.C ...
- String和StringBuffer的区别,String长度是固定的?
String和StringBuffer的区别,String长度是固定的? 区别: 1. String类字符串的长度是固定的,StringBuffer类字符串的长度是可变的.因为String改变的是地址 ...
- CString与string、char*的区别和转换
我们在C++的开发中经常会碰到string.char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆.下面详细介绍这三者的区别.联系和转换: 各自的区别 char*: ...
- Java中string与String区别_JAVA中String与StringBuffer的区别
JAVA中String与StringBuffer的区别 2009-12-3文字大小:大中小 在java中有3个类来负责字符的操作. 1.Character 是执行 单个字符操作的, 2.String ...
- Java中stringbutter_java中string与ButterString的区别
String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作. 1.C ...
- javascript中数据类型及转换、String()和toString()的区别
数据类型: JavaScript中的数据类型: 在计算机中,不同的数据类型所占的储存空间是不同的.1.原始数据类型:number (数字).string(字符串).boolean(布尔值).null( ...
- string 与stringbuilder的区别
string 与stringbuilder的区别 C# String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就 ...
最新文章
- 你会为情怀买单么?反正我会!
- python【蓝桥杯vip练习题库】ALGO-236大小写转换
- linux shell 脚本 2,理解Linux Shell和基本的Shell脚本(2)
- 对Java Inputstream的一次采访
- zigbee cc2530地址空间 layout 和flash操作
- 老布特木糖醇蛋卷鸡蛋味
- 获取要素集中字段的唯一值
- 匹配IP的正则表达式
- C#:Interval Helper
- Ping记录时间的方法
- Python 文件编码问题解决
- rsync通过服务同步、linux日志、screen工具
- c++ list排序_STL之list
- 视觉SLAM笔记(51) 非线性系统和 EKF
- 程序小白天天打卡(函数模板)
- IT菜鸟最实用的网站,只要不造轮子,都能解决。
- 电脑:键盘快捷键的更改(主要以dell笔记本电脑为模拟对象)
- outlook 签名_如何在Outlook 2013中创建新签名
- 2022年10个最佳URL缩短器:URL缩短器替代方案
- ERROR: Cannot install keras==2.2.0 and tensorflow==1.14.0 because these package versions have confli