我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java基础类库之StringBuffer类用法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java基础类库之StringBuffer类用法详解

StringBuffer类

String类是在所有开发项目开发之中一定会使用的一个功能类,并且这个类拥有如下功能

  • 每个字符串的常量都属于一个String类匿名对象,并且不能修改;
  • String类有两个常量池:静态常量池、运行常量池;
  • String类对象实例化建议直接使用赋值的形式完成,这样可以直接将对象保存在对象池中方便下次重用;

虽然String类很好用,但是我们发现它也有弊端,就是内容不允许频繁修改,所以为了解决问题,我们提供了StringBuffer类

StringBuffer 并不像String类那样拥有两种实例化方法,必须要想普通方法一样调用方法,这个时候可以考虑一下方法

  • 构造方法:public StringBuffer();
  • 数据追加:public StringBuffer append(数据类型、变量),相当于字符串中的“+”操作;
  • 构造方法:public StringBuffer(String str),相当于初始化

范例:观察String与StringBuffer对比

String类对象引用传递

public class JavaAPIDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str ="hello";
		change(str);
		System.out.println(str);
	}
	public static void change(String temp) {
		temp+="word";
	}

}

str内的值没有发生改变

StringBuffer类对象引用传递

public class JavaAPIDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer buf =new StringBuffer("Hello  ");
		change(buf);
		System.out.println(buf);
	}
	public static void change(StringBuffer temp) {
		temp.append("World");
	}

}

buf内的值发生了改变

由此可见String内的值不能改变,StringBuffer内的值可以改变,这就是两这最主要的区别

实际上大部分的情况下,很少会出现有字符串内容的改变,这种改变指的并不是针对静态常量池的改变;

范例:分析一下已有问题

public class JavaAPIDemo {

	public static void main(String[] args) {
	String strA="www.baidu.com";
	String strB="www."+"baidu."+"com";
	System.out.println(strA==strB);
	}

}

在这个时候strB对象里面的内容并不是真正改变,或者更严格的将,对于现在的strB当程序编译的时候就相当于下面形式

buf.append(“www.”).append(“baidu.”).append(“com”);

也就是说所有的”+“在我们编译后都变为了StringBuffer中的append()方法,并且在程序中String类对象和StringBuffer类对象本来就可以互相转换

  • String类对象变为StringBuferr可以依靠StringBuffer类构造方法或者使用append()方法
  • 所以类的对象都可以通过toString()方法将其变为String类型

在StringBuffer类里面除了可以支持字符串内容修改之外,实际上也添加了很多String所不具有的方法

public class JavaAPIDemo {

	public static void main(String[] args) {
	
	StringBuffer buf=new StringBuffer();
	buf.append(".com").insert(0,"www.").insert(4, "baidu");
	System.out.println(buf);
	}

}

删除指定范围的数据:public StringBuffer delete(int start,int end);

public class JavaAPIDemo {

	public static void main(String[] args) {
	
	StringBuffer buf=new StringBuffer();
	buf.append("Hello World!").delete(6, 12);
	System.out.println(buf);
	}

}

-字符串内容反转:public StringBuffer reverse();

public class JavaAPIDemo {

	public static void main(String[] args) {
	
	StringBuffer buf=new StringBuffer();
	buf.append("Hello World!");
	System.out.println(buf.reverse());
	}

}

实际上与StringBuffer类还有一个类似的功能类:StringBuilder类,这个类是在JDK1.5之后提供的,该类中提供的方法与StringBuffer类相同,区别在于StringBuffer类中的方法属于线程安全的,全都使用了synchronized关键字进行标注,而StringBuilder类属于非线程安全的

面试题:请解释String、StringBuffer、StringBuilder的主要区别?

String类是字符串的首选类型,其最大的特点是内容不允许修改;

StringBuffer与StringBuilder类的内容允许修改;

StringBuffer是在JDK1.0的时候提供的,属于线程安全操作,而StringBuilder是在JDK1.5的时候提供的不是线程安全操作

到此这篇关于Java基础类库之StringBuffer类用法详解的文章就介绍到这了,更多相关Java StringBuffer类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java基础类库之StringBuffer类用法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java基础类学习之String详解

这篇文章主要为大家详细介绍了Java基础类中String的相关知识,文中的示例代码讲解详细,对我们学习Java有一定的帮助,需要的可以参考一下
2022-12-27

Java 基础之内部类详解及实例

Java 基础之内部类详解及实例内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单
2023-05-31

【Java基础教程】(三十三)常用类库篇 · 第三讲:可变字符串支持类——解析 StringBuffer与 StringBuilder类~

Java基础教程之常用类库 · StringBuffer与 StringBuilder类 1️⃣ StringBuffer类1.1 概念1.2 特征1.3 使用 2️⃣ StringBuilder类2.1 概念及特征2.2 使用
2023-08-17

Java基础之System类和Static方法

本文主要介绍了System类、public static void exit(int status)方法、public static currentTimeMillis()方法、public static currentTimeMillis

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录