Java学习总结:31(StringBuffer类)
StringBuffer类
在Java中String类不适合使用于频繁修改字符串的操作上(因为其字符串常量一旦声明则不可改变,只能改变字符串对象,改变的是其内存地址的指向),所以我们可以使用StringBuffer类方便用户进行内容的修改。
例:观察StringBuffer类的使用
package Project.Study.StringBufferClass;public class Test1 {public static void main(String []args){//String类可以直接赋值,但是StringBuffer类不行StringBuffer buf=new StringBuffer(); //实例化StringBuffer类对象buf.append("Hello ").append("World").append("!!!"); //append()方法和String类的“+”作用类似change(buf); //引用传递System.out.println(buf);}public static void change(StringBuffer temp){//接收StringBuffer引用temp.append("\n").append("Hi").append("!!!");//修改内容}
}
//结果:
//Hello World!!!
//Hi!!!
我们可以发现String类和StringBuffer类都是CharSequence接口的子类,也就是说这两个类的对象都可以利用自动向上转型的操作为CharSequence接口实例化。
例:
package Project.Study.StringBufferClass;public class Test2 {public static void main(String []args){CharSequence seq="Hello World!!!";//将String类的实例化对象向上转型为CharSequence接口对象System.out.println(seq); //String类覆写的toString()}
}
//结果:
//Hello World!!!
需要注意的是,虽然String和StringBuffer类都属于CharSequence接口的子类,但是这两个类对象是不能直接转换的。
一:将String类转换为StringBuffer类对象
1.利用StringBuffer类的构造方法(public StringBuffer(String str))
例:
package Project.Study.StringBufferClass;public class Test2 {public static void main(String []args){StringBuffer buf=new StringBuffer("Hello World!!!");//利用该构造方法可以将传递进来的String类对象实例化为StringBuffer类对象System.out.println(buf);}
}
//结果:
//Hello World!!!
2.利用StringBuffer类的append()方法(public StringBuffer append(String str))
例:
package Project.Study.StringBufferClass;public class Test2 {public static void main(String []args){StringBuffer buf=new StringBuffer();buf.append("Hello World!!!"); //String变为StringBufferSystem.out.println(buf);}
}
//结果:
//Hello World!!!
二.将String Buffer类变为String
1.利用toString()方法可以将StringBuffer转换为String
例:
package Project.Study.StringBufferClass;public class Test3 {public static void main(String []args){StringBuffer buf=new StringBuffer("Hello World!!!"); //String变为StringBufferString str=buf.toString(); //任何类都具备toString()方法System.out.println(str);}
}
//结果:
//Hello World!!!
事实上所以的类中都会继承Object类的toString()方法,所以所有的类对象都可以转换为String类对象。
2.利用String类的构造方法(public String(StringBuffer buffer))实现StringBuffer与String的转换
例:
package Project.Study.StringBufferClass;public class Test4 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello World!!!"); //String变为StringBufferString str=new String(buf); //String类构造,开辟新内存System.out.println(str);}
}
//结果:
//Hello World!!!
三.由于String与StringBuffer都表示字符串,所以在String类里面也提供了一个和StringBuffer比较的方法:public boolean contentEquals(StringBuffer sb)
package Project.Study.StringBufferClass;public class Test5 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello");System.out.println("Hello".contentEquals(buf));}
}
//结果:
//true
注意:此方法比较时会区分大小写
StringBuffer类常用的操作方法
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public StringBuffer append(数据类型变量) | 普通 | 数据追加操作 |
2 | public StringBuffer reverse() | 普通 | 字符串反转操作 |
3 | public StringBuffer insert(int offset,数据类型变量) | 普通 | 在指定位置追加内容 |
4 | public StringBuffer delete(int start,int end) | 普通 | 删除指定索引范围的内容 |
例:字符串反转操作
package Project.Study.StringBufferClass;public class Test6 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello World");System.out.println(buf.reverse()); //使用reverse()方法反转字符串}
}
//结果:
//dlroW olleH
例:在指定索引位置增加数据
package Project.Study.StringBufferClass;public class Test7 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello");//首先在最前面加上字符串,然后在指定位置再追加字符串buf.insert(0,"Now!").insert(9," World");System.out.println(buf);}
}
//结果:
//Now!Hello World
例:删除部分数据
package Project.Study.StringBufferClass;public class Test8 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello World!!!");System.out.println(buf.delete(5,11));}
}
//结果:
//Hello!!!
相关文章:

c语言常用数据类型转换整理
你要发送原始数据流 还是 格式化输出? 如果是格式化 按原子说的 ,用sprintf / printf; 如果发送原始内存数据流, 可按下面发送, 发送 #define BYTE0(pointer) (*((char*)(&pointer)0)); #define BYTE1(pointer) (*((char…

2022-2028年中国老年旅游市场深度调研及开发战略研究报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国老年旅游行业市场行业相关概述、中国老年旅游行业市场行业运行环境、分析了中国老年旅游行…

Andriod使用webview控件往APP里内嵌网页
1.布局文件片段:res-layout <WebView android:id"id/Toweb" android:layout_width"fill_parent" android:layout_height"fill_parent" /> 2.Java片段:src Overrideprotected void onCreate(Bundle savedInstance…

垃圾回收器ZGC应用分析总结
ZGC 是一款低延迟、高吞吐的垃圾回收器,由 Oracle 公司开发。它适用于大型、多核、内存容量较大的应用程序。ZGC 的设计目标是在最大限度地减少停顿时间的同时,为大型内存提供可伸缩性,并为生产部署提供高吞吐量和稳定性。它的目标是以不到 10 毫秒的暂停时间来控制 100MB 到 4TB 的内存。此外,ZGC 还致力于避免全局 JVM 暂停,从而提高系统的可用性。简单来说,它的设计目标是在不超过 10 毫秒的暂停时间内,尽可能地回收大量的堆内存。低延迟:ZGC 的主要目标是最小化 GC 暂停时间。

14个Java并发容器,你用过几个?
不考虑多线程并发的情况下,容器类一般使用ArrayList、HashMap等线程不安全的类,效率更高。在并发场景下,常会用到ConcurrentHashMap、ArrayBlockingQueue等线程安全的容器类,虽然牺牲了一些效率,但却得到了安全。上面提到的线程安全容器都在java.util.concurrent包下,这个包下并发容器不少,今天全部翻出来鼓捣一下。仅做简单介绍,后续再分别深入探索。ConcurrentHashMap:并发版HashMap。

MySQL主从复制(基于binlog日志方式)
主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。主从复制的作用1.做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。2.架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。3.读写分离,使数据库能支撑更大的并发。a.从服务器可以执行查询工作(就是我们常说的读功能),降低主服务器压力;(主库写,从库读,降压)

RabbitMQ安装
windows上安装过程:https://blog.csdn.net/linsongbin1/article/details/80170567运行中给新建用户赋权限,如果界面创完用户忘给权限了可以用这个方法:https://blog.csdn.net/hello_world_php/article/details/83859767 备注:我的…

Complete C# Unity Game Developer 2D
你会学到什么 从头开始学习C#,一门强大的现代语言。没有编程经验是必要的。 在使用Unity游戏引擎方面变得优秀。 为游戏设计和游戏开发打下坚实的基础,这将有助于您构建自己的游戏。 了解面向对象编程在实践中如何工作。 创建可玩的游戏项目——对你的投…

玩转android自定义控件二——自定义索引栏listview
带索引栏的listview,在android开发非常普遍,方便用户进行字母索引,就像微信通讯录这样: 今天,我们就从零到一实现这个具有索引栏的listview. 怎么实现这个控件了,我们应当梳理出一个思路。 ①首先应当将字母…

172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。 示例 1: 输入: 3 输出: 0 解释: 3! 6, 尾数中没有零。示例 2: 输入: 5 输出: 1 解释: 5! 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。 话不多说,先上代码: class So…

Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译
Mysql函数group_concat、find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查询出的原料结果显示为原料名称,并以逗号分隔。可通过函数g…

网站速度优化-前端篇
2019独角兽企业重金招聘Python工程师标准>>> 页面中最好不要有js片段,合并多个js为一个js,并将js压缩 (百度搜索,有在线js压缩、解压缩工具),并放在文档底部页面中最好不要有css片段,…

HashMap总结
为什么用HashMap HashMap是一个Hash桶(数组链表),桶存储的内容是键值对(Key-value)映射HashMap采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改HashMap是非synchronized,所以HashMap很快(哈哈哈)与HashT…

Blender与Substance painter制作三维手枪
你会学到: Blender和Substance painter的基础知识 建模 纹理制作 烘焙 Uv展开 Boolens和斜角修改器 如何制作游戏准备枪 课程获取:Blender与Substance painter制作三维手枪 – 云桥网络-CG技术学习平台 要求 Blender Substance painter 你好,我是3d艺术…

Java学习总结:32(Runtime类)
Runtime类 该类用于表示虚拟机(JVM)运行时的状态,每次启动JVM都对应一个Runtime实例,且只有一个实例,利用Runtime类可以启动新的进程或进行相关运行时环境的操作。此外,该类采用单例模式设计,对象不可以直接实例化。所…

转:查看系统是64位还是32位
1、getconf LONG_BIT or getconf WORD_BIT 例如: 2、file /bin/ls 例如: 查看linux的版本: 转载于:https://www.cnblogs.com/lei-lei/p/5029120.html

Redis问题——Error: 磁盘在使用中,或被另一个进程锁定。
Redis出于对数据保护,默认只能本地客户端连接。远程连接就会出现以上错误。如何解决这一问题,看下: server -A,PC-A, 修改server-A的redis.conf:注释掉本地绑定; bind 127.0.0.1 表示指定绑定本机IP&…

[转]C#索引器
索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。 1、索引器的定义 C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对…

从Java8到Java21各版本新特性详解
下面这张图是 Oracle 官方给出的 Oracle JDK 支持的时间线,可以看出,JDK 17的支持时间最长,可以延续到2029年9月。考虑到技术更新的速度,这次免费商用8年的时间可谓是经过精心考虑,旨在让用户放心地升级到JDK 17(不过JDK 8的支持时间更长,到2030年12月)。 从JDK诞生到现在,仅有几个版本得到了长期支持,主要包括JDK 7、JDK 8、JDK 11以及即将发布的JDK 17,它将是继Java 8之后最重要的LTS版本,是Java社区八年努力的成果。

make[1]: g++: Command not found
今天装了nmap软件,开始报这种错:g -c -Iliblua -Ilibdnet-stripped/include -Ilibpcre -Ilibpcap -Inbase -Insock/include -fno-strict-aliasing -DHAVE_CONFIG_H -DNMAP_NAME\"Nmap\" -DNMAP_URL\"http://nmap.org\" -DNMAP_PL…

学习如何用平板电脑设计和绘制自己的动漫角色
创造你自己的动漫人物插图 学习如何用平板电脑设计和绘制自己的动漫角色 大家好,我是Pesa,一个想把快乐和希望融入到讲述故事的插画中的插画师。一点一点地,我画出我喜欢和希望的事物的场景,它把我带到了101班。 艺术世界 艺术是…

Java学习总结:33(System类)
System类 System类的方法 No.方法类型描述1public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)普通数组粘贴操作2public static long currentTimeMillis()普通取得当前的日期时间&#x…

重磅推出:AutoProject Studio 自动化项目生成器
AutoProject Studio 自动化项目生成器 核心架构图 AutoProject Studio 自动化项目生成器是一款基于C#.Net Framework 4.0为平台自主研发、专为软件设计、开发、管理的自动化项目(代码)生成器,同时也是一个智能化软件开发平台与超高效率、超低成本的最优解决方案。 该…

2022-2028年中国基因工程药物产业市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国基因工程药物行业市场行业相关概述、中国基因工程药物行业市场行业运行环境、分析了中国基…

Perl 模块安装遇到的问题解决办法
2019独角兽企业重金招聘Python工程师标准>>> 问题1:Warning (usually harmless): YAML not installed, will not store persistent state 解决办法: 官网下载:http://search.cpan.org/~mstrout/YAML-0.84/lib/YAML.pm 上传安装…

如何终止一个正在动态执行的命令
比如,我们在终端输入了top 那么它就会一直动态的运行下去。 我们怎样让它终止呢? 很简单,Ctrl C就可以了。 另外,还有一种方法, 直接按一下q也可以退出。 它们两个的效果是一样的。转载于:https://www.cnblogs.com/o8l…

绘制你的世界:探索构图和真实的深度感
MP4 |视频:h264,1920 x 1080 |音频:AAC,48 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确)| 2h 24m |大小解压后:3.2 GB 勾画你的世界不是关于天赋,而是关于任何人都可以学习的原则和…

Java学习总结:34(对象克隆)
对象克隆 对象克隆就是对对象的复制操作,在Object类中存在一个clone()方法用于对象的克隆操作。该方法如下: protected Object clone() throws CloneNotSupportedException;我们注意到: 1.此方法使用了protected访问权限&#x…

win7下的IP-主机名映射
今天学了个技巧,win7下有个目录:C:\Windows\System32\drivers\etc该目录下有个文件:hosts在这个文件里面我们可以映射IP-主机名:127.0.0.1 localhost........格式为:IP空格主机名这样我们就可以用主机名代替IP了。转载…

Spring AOP + Redis解决重复提交的问题
Spring AOP Redis解决重复提交的问题 用户在点击操作的时候,可能会连续点击多次,虽然前端可以通过设置按钮的disable的属性来控制按钮不可连续点击,但是如果别人拿到请求进行模拟,依然会出现问题,项目是用JWT进行认证…