前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Java类库之StringBuffer类(重点)

Java类库之StringBuffer类(重点)

作者头像
葆宁
发布于 2019-04-18 09:00:22
发布于 2019-04-18 09:00:22
84400
代码可运行
举报
文章被收录于专栏:FREE SOLOFREE SOLO
运行总次数:0
代码可运行

在讲解StringBuffer类之前首先来简单回顾一下String类的特点:

· String类的对象有两种实例化方式,一种是直接赋值,只会开辟一块堆内存空间,而且对象可以自动入池,另外一种方式使用构造方法完成,会开辟两块空间,有一块空间将成为垃圾,并且不会自动入池,但是可以通过intern()方法手工入池; · 字符串常量一旦声明则不可改变,而字符串对象可以改变,但是改变的是其内存地址的指向;

通过以上的几个特点就可以清楚的发现,String类是表示字符串使用最多的类,但是其不适合于被频繁修改的字符串操作上,所以在这种情况下,往往可以使用StringBuffer类,即:StringBuffer类方便用户进行内容的修改。在String类之中使用“+”作为数据库的连接操作,而在StringBuffer类之中使用append()方法进行数据的连接。

范例:使用StringBuffer操作,StringBuffer的内容可以改变

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   public class TestDemo {
    	public static void main(String[] args) throws Exception {
    		StringBuffer buf = new StringBuffer();
    		buf.append("Hello ").append("World ."); // 连接内容
    		fun(buf);
    		System.out.println(buf);
    	}
    	public static void fun(StringBuffer temp) {
    		temp.append("\n").append("Hello PKU");
    	}
    }

StringBuffer类在日后主要用于频繁修改字符串的操作上,但是在任何的开发之中,面对字符串的操作,98%都先考虑String,只有那2%会考虑StringBuffer。 现在表示字符串的操作类就有了两个:String、StringBuffer,那么下面通过这两个类的定义来研究一下关系:

现在发现String和StringBuffer类都实现了一个CharSequence接口,日后一定要记住,如果看见了CharSequence最简单的理解做法就是传字符串,但是虽然这两个类是同一个接口的子类,不过这两个类对象之间却不能互相直接转型。

操作一:将String变为StringBuffer · 方法一:直接利用StringBuffer类的构造方法,public StringBuffer(String str)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "Hello World." ;
		StringBuffer buf = new StringBuffer(str);
		System.out.println(buf);
	}
}

· 方法二:利用StringBuffer类的append()方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String str = "Hello World ." ;
		StringBuffer buf = new StringBuffer();
		buf.append(str) ;
		System.out.println(buf);	
   }
}

操作二:将StringBuffer变为String,利用StringBuffer类的toString()方法完成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TestDemo {
	public static void main(String[] args) throws Exception {
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World .") ;
		String str = buf.toString() ;
		System.out.println(str); 
	}
}

在String类之中定义了许多的操作方法,同样,在StringBuffer类之中也定义了许多的操作方法,而且有些方法还是String类所有没有的支持。

范例:字符串反转操作,public StringBuffer reverse()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TestDemo {
	public static void main(String[] args) throws Exception {
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World .") ;
		System.out.println(buf.reverse()); 
	}
}

范例:替换指定范围内的数据,public StringBuffer replace(int start, int end, String str)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TestDemo {
	public static void main(String[] args) throws Exception {
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World .") ;
		System.out.println(buf.replace(6, 12, "PKU")); 
	}
}

范例:在指定位置上插入数据,public StringBuffer insert(int offset, 数据类型 变量)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TestDemo {
	public static void main(String[] args) throws Exception {
		StringBuffer buf = new StringBuffer();
		buf.append("World .").insert(0, "Hello ") ;
		System.out.println(buf); 
	}
}

面试题:请解释String和StringBuffer的区别?

String的内容不可改变,而StringBuffer的内容可以改变。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
StringBuffer类
区别:StringBuffer类可以改变字符串中的内容,而String类则无法改变被初始化过的字符串内容(改变的只是String字符串的引用位置)
Mirror王宇阳
2020/11/12
3290
Java - IO System类支持和缓冲流
System.err 是 PrintStream 类对象,此对象专门负责进行错误信息的输出操作
Mirror王宇阳
2020/11/12
5140
你真的懂Java中的String、StringBuilder和StringBuffer吗?
相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲:
Bug开发工程师
2018/07/23
7240
你真的懂Java中的String、StringBuilder和StringBuffer吗?
String&StringBuffer类转换
方法一:使用StringBuffer类的构造方法,public StringBuffer(String str) public class Person { public static void main(String[] args) { String str ="hello world"; StringBuffer buf = new StringBuffer(); buf.append(str); System.out.println(buf); } } 方法二:利用StringBuffer类的append()方法 public class Person { public static void main(String[] args) { String str ="hello world"; StringBuffer buf = new StringBuffer(str); System.out.println(buf); } }
MaybeHC
2024/04/23
970
Java.Io 初步了解
File类是对文件/文件夹本身进行:创建、删除、路径等操作,对文件的具体内容不会操作。
Mirror王宇阳
2020/11/10
8850
Java学习笔记--常用类及其常用方法、JDK5新特性、正则表达式介绍
object类String类其他类常用方法StringBuffer类JDK5新特性正则表达式Random类其他类常用方法Calendar类
用户7886150
2020/12/12
5390
李兴华Java核心技术讲解--类集框架笔记
3.1、认识类集(理解) 如果现在要想保存多个对象,肯定使用对象数组完成,但是对象数组本身有一个最大的问题在于其数据的长度,所以后来使用了链表完成了动态对象数组的开发,可是链表的开发难度实在是很大,而且如果一个链表要想真正去使用,只依靠之前所编写的还不够,还需要进行一些代码的调优。 而在JDK 1.2之后正式引入了类集的概念,类集是一种动态的对象数组,属于各个数据结构的实现类,在整个类集之中主要的组成是一些核心的操作接口:Collection、List、Set、Map、Iterator、Enumeration。 3.2、单值保存的最大父接口:Collection(重点) 所谓的单值保存指的是每一次操作只会保存一个对象,就好像之前的链表程序一样,每一次只保存了一个对象,在Collection接口之中定义了如下的一些操作方法。 No. 方法名称 类型 描述 1 public boolean add(E e) 普通 数据增加 2 public void clear() 普通 清除数据 3 public boolean contains(Object o) 普通 查找数据是否存在 4 public boolean isEmpty() 普通 判断是否为空集合 5 public Iterator iterator() 普通 为Iterator接口实例化 6 public boolean remove(Object o) 普通 删除数据 7 public int size() 普通 取得集合的个数 8 public Object[] toArray() 普通 将集合变为对象数组 在Collection接口之中一共定义了15个方法,在所有的方法之中,只有两个方法最为常用:add()、iterator()。不过从开发上讲,很少会去直接使用Collection,都会使用Collection的两个子接口:List、Set。 3.3、允许重复的子接口:List(重点,80%) List是Collection的一个最为常用的子接口,首先这个接口的定义如下: public interface List extends Collection 但是List接口对Collection接口进行了大量的扩充,但是扩充之后的主要方法: No. 方法名称 类型 描述 1 public E get(int index) 普通 取得指定索引位置上的数据 2 public E set(int index, E element) 普通 修改指定索引位置上的数据 3 public ListIterator listIterator() 普通 为ListIterator接口实例化 但是以上的三个方法,只是针对于List接口起作用,而List接口有两个常用子类:ArrayList、Vector。 3.3.1、新的子类:ArrayList,95% ArrayList是List子接口使用最多的一个子类,而这个类的定义如下: public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable 按照面向对象的概念来讲,现在使用ArrayList主要的目的是为List接口实例化,所有的操作方法都以List接口为主。 范例:使用ArrayList进行List接口的功能验证 package cn.mldn.demo; import java.util.ArrayList; import java.util.List; public class TestDemo { public static void main(String[] args) throws Exception { List all = new ArrayList() ; all.add(“Hello”) ; all.add(“Hello”) ; // 内容重复了 all.add(“World”) ; for (int x = 0; x < all.size(); x++) { String str = all.get(x) ; // get()方法只有List接口有 System.out.print(str + “、”); } } } 在使用代码的时候可以发现,List集合之中即使存在了重复数据,也可以正常的保存,而且数据保存的顺序就是存入数据的顺序。 范例:使用List集合修改之前的程序 package cn.mldn.demo; import java.util.ArrayList; import java.util.List; interfac
葆宁
2019/04/18
6270
深入理解String,StringBuilder,StringBuffer
从上面的三个方法可以看出,无论是subString、concat还是replace操作都不是在原有的字符串上进行的,而是重新生成了一个新的字符串对象。也就是说进行这些操作后,最原始的字符串并没有被改变。
yesr
2019/03/20
5220
深入理解String,StringBuilder,StringBuffer
新手学JAVA(二)----String类与StringBuffer类的区别
在Java中有两种字符串的操作:String类和StringBuffer类(缓冲字符串处理类)。 下面先简单的说一下两者的区别。 String类和StringBuffer类都提供了相应的方法实现字符串的操作,但二者略有不同。
令仔很忙
2018/09/14
3920
StringBuffer类的使用方法详解:打造高效字符串操作
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
喵手
2023/11/21
3510
StringBuffer类的使用方法详解:打造高效字符串操作
【Java基础篇】String、StringBuffer和StringBuilder的区别
String类是不可变类(final修饰),即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。
程序员云帆哥
2022/05/12
1760
【Java基础篇】String、StringBuffer和StringBuilder的区别
Java从入门到精通六(java中的字符串变量String,StringBuilder,StringBuffer)
首先我们认识到java中的数据类型分为基本数据类型和引用数据类型。基本数据类型分为数值,字符,布尔,而引用数据类型分为类,接口,数组。 String是属于引用数据类型的。因为String本身就是一个类 需要了解基本数据类型和引用数据类型的区别。基本数据类型是直接存储在内存的栈上的,引用数据类型继承自Object类,按照对象的内存模式进行存储。我们的引用存放在内存的栈上,而对于对象本身的值存放在内存的堆上。我们java中通过new出来的对象就会存放在堆中。
兰舟千帆
2022/07/16
1.5K0
Java从入门到精通六(java中的字符串变量String,StringBuilder,StringBuffer)
一篇文章带你搞定StringBuffer类和常用方法
1.我们知道字符串是常量,一旦被创建后,它的内容和长度值是不能够改变的,当需要对一个字符串进行修改,只可以再创建,这样就有点麻烦,可以使用StringBuffer类来解决这个问题,修改它的内容和长度。它是一个容器,可以添加和删除,此时不会产生新的StringBuffer对象。
Java进阶者
2021/03/25
6170
【Java SE语法篇】10.String类
在程序开发中经常会用到字符串。字符串是指一连串的字符,它是由许多单个字符连接而成的,如多个英文字母所组成的英文单词。字符串可以包含任意字符,这些字符必须包含在一对双引号""之内,例如:“abc”。Java定义了3个封装字符串的类,分别是String类、StringBuffer类和StringBulider类。它们位于java.lang 包中,并提供了一系列操作字符串的方法,这些方法不需要导包就可以直接使用。下面将对String类、StringBuffer类和StringBulider类进行讲解。
爱敲代码的小杨.
2024/05/07
710
【Java SE语法篇】10.String类
夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
程序员黄小斜
2019/09/25
6980
StringBuffer和StringBuilder类
参考链接: Java中的String vs StringBuilder vs StringBuffer
用户7886150
2020/12/11
5520
Java类库之正则表达式(重点)
但是现在一个简单的问题就出现了,这个验证应该算是不难的,但是面对这样一个不麻烦的验证,代码写了9行代码,如果是一些更为复杂的验证呢?那么对于整体操作就更加的麻烦了,现在有另外一种做法:
葆宁
2019/04/18
5210
Java类库之正则表达式(重点)
【Java】一篇文章带你了解String、StringBuffer和StringBuilder的区别
在Java中,需要避免直接对String类对象进行修改,因为String类是不能被修改的,所有的修改都会创建新的对象,效率非常低下.
全栈程序员站长
2022/09/09
3470
泛型的引出(重点)
下面首先通过一个简单的分析来研究一下泛型出现的主要目的,例如:现在要求定义一个表示坐标的操作类(Point),这个类可以表示三种类型的坐标: · 整数坐标:x = 10、y = 20; · 小数坐标:x = 10.1、y = 20.3; · 字符串数据:x = “东经100度”、y = “北纬20度”。 类之中如果要想保存以上的数据,一定需要定义x和y两个属性,而这两个属性可以接收三种数据类型,那么只能使用Object类来定义会比较合适,这样会发生如下的几种转换关系: · 整数:int  自动装箱为Integer  向上转型为Object; · 小数:double  自动装箱为Double  向上转型为Object; · 字符串:字符串  向上转型为Object。 范例:定义Point类,使用Object作为属性类型
葆宁
2019/04/18
3710
Java类库之日期操作类(核心)
在Java之中,如果要想表示出日期型,则使用java.util.Date类完成。 如果要想通过这个类取得当前的日期时间,那么只需要直接实例化Date类对象即可:public Date()。
葆宁
2019/04/18
7680
推荐阅读
相关推荐
StringBuffer类
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文