Java基础之StringBuffer类4月打卡day13
Java基础之4月打卡day13
关于作者
-
作者介绍
🍓 博客主页:
🍓 简介:JAVA领域优质创作者🥇、一名在校大三学生🎓、在校期间参加各种省赛、国赛,斩获一系列荣誉🏆。
🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨💻。
对于类库的学习,不可能全学完。你所需要知道就是如何面对解决问题的方法。要学会查询文档。
StringBuffer类之前首先来简单回顾一下String类的特点:
String类的对象有两种实例化方式,一种是直接赋值,只会开辟一块堆内存空间,而且对象可以自动入池,另外一种方式使用构造方法完成,会开辟两块空间,有一块空间将称为垃圾,并且不会自动入池,但是可以通过intern()方法手工入池;
字符串常亮一旦声明则不能改变,而字符串对象可以改变,但是改变的是其内存地址的指向;
通过以上的几个特点就可以清楚的发现,String类是表示字符串使用最多的类,但是其不合适于被频繁修改的字符串操作上,所以在这种情况下,往往可以使用StringBuffer类,即:StringBuffer类方便用户进行内容的修改,在String类之中使用“+”作为数据库的连接操作,而在StringBuffer类之中使用append()方法进行数据的连接。
使用StringBuffer操作,StringBuffer内容可以改变。
package com.day13.demo;
public class BufferDemo {
public static void main(String[] args) {
StringBuffer buf = new StringBuffer();
buf.append("hello").append(",world!");
fun(buf);//修改了buf的内容
System.out.println(buf);
}
public static void fun(StringBuffer tem){
tem.append("\n").append("zsr");
}
}
String和StringBuffer最大的区别就是:String的内容无法修改,而StringBuffer的内容可以修改。但是在开发的选择还是优先选择String类。
现在学习的字符串的操作类就有两个了:String,StringBuffer,那么下面通过这两个类的定义来研究一下关系:
| String类: | StringBuffer类: |
|---|---|
| public final class String extends Object implements Serializable,Comparable<String>,CharSequence | public final class StringBuffer extends Object implements Serializable, CharSequence |
可以发现两个类都是“CharSequence”接口的子类。这个接口描述的是字符集,所以串就属于字符集的子类,如果以后看见CharSequence最简单的联想就是字符串。但是有一个小小的问题需要注意一下就是String和StringBuffer两个类型无法直接转换。
利用StringBuffer:利用StringBuffer构造方法、append()方法
将String变为StringBuffer
1.直接利用StringBuffer类的构造方法,public StringBuffer(String str)
package com.day13.demo;
public class BufferTest{
public static void main(String[] args) throws Exception {
String str = "Hello World.";
StringBuffer buf = new StringBuffer(str);
fun(buf);
System.out.println(buf);
}
private static void fun(StringBuffer temp) {
temp.append("\n").append("zsr");
}
}
2.利用StringBuffer类的append()方法
package com.day13.demo;
public class BufferTest{
public static void main(String[] args) throws Exception {
String str = "Hello World.";
StringBuffer buf = new StringBuffer();
buf.append(str);
fun(buf);
System.out.println(sb);
}
private static void fun(StringBuffer temp) {
temp.append("\n").append("zsr");
}
}
将StringBuffer变成String,利用StringBuffer类的toString()方法完成
package com.day13.demo;
public class BufferTest{
public static void main(String[] args) throws Exception {
StringBuffer buf = new StringBuffer("hello,World!");
String str = buf.toString();
System.out.println(str);
}
}
实际上StringBuffer还是有一些String类所没有的特点的。
1.字符串反转操作,public StringBuffer reverse()
package com.day13.demo;
public class BufferTest{
public static void main(String[] args) throws Exception {
StringBuffer buf = new StringBuffer("hello,World!");
System.out.println(buf.reverse());
}
}
2.删除指定范围内的数据,public StringBuffer delete(int start, int end)
package com.day13.demo;
public class BufferDemo {
public static void main(String[] args) {
StringBuffer buf = new StringBuffer("Hello,World!");
System.out.println(buf.delete(5, 11));
}
}
3.插入数据的方法, public StringBuffer insert(int offset, Object obj)
package com.day13.demo;
public class BufferDemo {
public static void main(String[] args) {
StringBuffer buf = new StringBuffer("Hello,World!");
System.out.println(buf.delete(5,11).insert(0, "你好,"));
}
}
面试题:请解释String、StringBuffer、StringBuilder的区别?
-
String的内容不可以修改,StringBuffer与StringBuilder内容可以修改
-
StringBuffer采用同步处理属于线程安全操作,StringBuilder采用异步处理属于线程不安全操作。
- 点赞
- 收藏
- 关注作者
评论(0)