StringBuffer的用法
StringBuffer的用法
StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。
所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。
在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。
但是有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。
另外由于StringBuffer是线程安全的,关于线程的概念后续有专门的章节进行介绍,所以在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。
1、StringBuffer对象的初始化
StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。
例如:
StringBuffers=newStringBuffer();
这样初始化出的StringBuffer对象是一个空的对象,就是我犯的错误。
如果需要创建带有内容的StringBuffer对象,则可以使用:
StringBuffers=newStringBuffer(“abc”);
这样初始化出的StringBuffer对象的内容就是字符串”abc”。
需要注意的是,StringBuffer和String属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:
StringBuffers=“abc”;//赋值类型不匹配
StringBuffers=(StringBuffer)”abc”;//不存在继承关系,无法进行强转
StringBuffer对象和String对象之间的互转的代码如下:
Strings=“abc”;
StringBuffersb1=newStringBuffer(“123”);
StringBuffersb2=newStringBuffer(s);//String转换为StringBuffer
Strings1=sb1.toString();//StringBuffer转换为String
2、StringBuffer的常用方法
StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。
a、append方法
publicStringBufferappend(Booleanb)
该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。
调用该方法以后,StringBuffer对象的内容也发生改变,例如:
StringBuffersb=newStringBuffer(“abc”);
sb.append(true);
则对象sb的值将变成”abctrue”。
使用该方法进行字符串的连接,将比String更加节约内容,例如应用于数据库SQL语句的连接,例如:
StringBuffersb=newStringBuffer();
Stringuser=“test”;
Stringpwd=“123”;
sb.append(“select*fromuserInfowhereusername=“).append(user).append(“andpwd=”).ap pend(pwd);
这样对象sb的值就是字符串“select*fromuserInfowhereusername=testandpwd=123”。
b、deleteCharAt方法
publicStringBufferdeleteCharAt(intindex)
该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。
例如:StringBuffersb=newStringBuffer(“Test”);
sb.deleteCharAt(1);
该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。
所以对象sb的值变为”Tst”。
还存在一个功能类似的delete方法:
publicStringBufferdelete(intstart,intend)
该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。
例如:
StringBuffersb=newStringBuffer(“TestString”);
sb.delete(1,4);
该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。
则对象sb的值是”TString”。
c、insert方法
publicStringBufferinsert(intoffset,booleanb)
该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。
例如:StringBuffersb=newStringBuffer(“TestString”);
sb.insert(4,false);
该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。
d、reverse方法
publicStringBufferreverse()
该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。
例如:StringBuffersb=newStringBuffer(“abc”);
sb.reverse();
经过反转以后,对象sb中的内容将变为”cba”。
e、setCharAt方法
publicvoidsetCharAt(intindex,charch)
该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。
例如:StringBuffersb=newStringBuffer(“abc”);
sb.setCharAt(1,’D’);
则对象sb的值将变成”aDc”。
f、trimToSize方法
publicvoidtrimToSize()
该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
总之,在实际使用时,String和StringBuffer各有优势和不足,可以根据具体的使用环境,选择对应的类型进行使用。
云计算技术与应用专业《StringBuffer、StringBuilder》
使用 ch 指定的新值替换 index指定的位置上的字符
String toString()
转换为字符串形式
StringBuffer reverse()
将当前StringBuffer对象中的字符序列倒置
StringBuffer delete(int start, int end)
删除当前对象中从start位置开始直到 end 指定的索引 位置 的字符序列
线程是否安全
安全
效率
相对低
StringBuilder
不安全 相对高
第七页,共八页。
内容总结
StringBuffer、StringBuilder。StringBuffer类用于表示可以修改的字符串,称为字符串缓冲对象。使 用运算符的字符串将自动创立字符串缓冲对象。以下是StringBuffer类的构造方法有4种重载方式,以下 是常用的几个:。创建一个空的StringBuffer对象,默认保留16个字符的缓冲空间。此方法使用一组字 符替换另一组字符。strBuf.insert(5, "Student")
StringBuffer、StringBuilder
第一页,共八页。
StringBuffer类
StringBuffer类用于表示可以修改的字符串,称为字符串缓冲对象;
使用运算符的字符串将自动创立字符串缓冲对象;
例如: str1+str2的操作,实际上是把str1与str2都创立成StringBuffer类 对象
StringBuffer与String是同等的类,唯一区别是可以进行更 改。
第五页,共八页。
StringBuilder例如
JDK1.5以后,提供了一个新的字符缓冲区: StringBuilder 。 提供和StringBuffer相似的API 非线程平安
stringbuilder的用法
stringbuilder的用法StringBuilder,符串缓冲区,是java中一个普遍使用的轻量级对象,在不同场景下都能发挥出良好的性能,使程序更加高效、简洁,它能够有效地减少内存使用,大大提高程序性能,是程序更加高效、简洁的重要一环。
StringBuilder的功能比较强大,它在处理大部分字符串任务时都有着极高的效率,是非常受欢迎的解决方案。
它的设计采用了一系列的算法,结合着贴心的优化,使得性能的提升更加显著。
它的渐进式增长算法,能够以最少的资源实现最大的效果,极大地节省了内存的使用。
另外,它的“自己扩展算法”也让它能够应付大部分字符串处理任务,减少不必要的内存复制,达到更高的性能。
StringBuilder可以快速构造字符串,拼接字符串,替换字符串,删除字符串,反转字符串等操作。
1.造字符串StringBuilder提供了一系列重载的构造函数,用于构造不同类型的StringBuilder对象,如构造一个空的StringBuilder:StringBuilder sb = new StringBuilder();构造时可以指定容量:StringBuilder sb = new StringBuilder(20);此时sb的容量为20,而非当前字符串的容量。
2.接字符串StringBuilder提供了一系列拼接函数,例如append()、insert()、replace()等函数,可以拼接字符串。
例如,拼接一个字符串:sb.append(Hello World!);拼接字符数组:sb.append(chars);拼接一个字符串构造函数:sb.append(new StringBuilder(Hello World!));可以看到,StringBuilder可以非常轻松地拼接字符串,且效率也很高,能有效提升程序的性能。
3.换字符串StringBuilder提供了replace()函数,用于替换指定范围内的字符串:sb.replace(0, 10, hello替换 sb中从索引0到10的字符串,替换为hello,也可以替换指定字符:sb.replace(a b替换sb中所有的a为b。
java中stringBuilder的用法
java中stringBuilder的用法String 对象是不可改变的。
每次使用System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
在需要对字符串执行重复修改的情况下,与创建新的String 对象相关的系统开销可能会非常昂贵。
如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder 类。
例如,当在一个循环中将许多字符串连接在一起时,使用StringBuilder 类可以提升性能。
通过用一个重载的构造函数方法初始化变量,可以创建StringBuilder 类的新实例,正如以下示例中所阐释的那样。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");设置容量和长度虽然StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。
此值称为该对象的容量,不应将它与当前StringBuilder 对象容纳的字符串长度混淆在一起。
例如,可以创建StringBuilder 类的带有字符串“Hello”(长度为5)的一个新实例,同时可以指定该对象的最大容量为25。
当修改StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。
当达到容量时,将自动分配新的空间且容量翻倍。
可以使用重载的构造函数之一来指定StringBuilder 类的容量。
以下代码示例指定可以将MyStringBuilder 对象扩充到最大25 个空白。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);另外,可以使用读/写Capacity 属性来设置对象的最大长度。
java中字符串String、StringBuilder、StringBuffer的常用方法
java中字符串String、StringBuilder、StringBuffer的常⽤⽅法String的常⽤⽅法:1public static void main(String[] args) {2 String str = "Hello world!";3// 获取字符串的长度4 Integer lenth = str.length();56// 返回指定字符在此字符串中第⼀次出现处的索引 -- 从0开始7 Integer index = str.indexOf("l");89// 返回在此字符串中第⼀次出现指定字符处的索引,从指定的索引开始搜索。
10 Integer index2 = str.indexOf("l", 5);1112// 从指定位置开始,截取到最后的字符串返回13 String substr1 = str.substring(3);1415// 从指定位置开始到指定位置结束,截取字符串返回16 String substr2 = str.substring(3, 9);1718// 返回去除字符串前后空格后的字符串19 String str2 = str.trim();2021// 返回指定位置的char字符22char str3 = str.charAt(5);2324// 返回此字符串是否以指定的前缀开始25boolean res1 = str.startsWith("He");2627// 返回此字符串是否以指定的后缀结束28boolean res2 = str.endsWith("!");2930// 返回此字符串从指定的位置开始的⼦字符串是否以指定前缀开始31boolean res3 = str.startsWith("world", 6);3233// 使⽤默认语⾔环境的规则将此 String 中的所有字符都转换为⼤写34 String str4 = str.toUpperCase();3536// 使⽤默认语⾔环境的规则将此 String 中的所有字符都转换为⼩写37 String str5 = str.toLowerCase();3839// 返回参数的字符串表⽰形式 -- 参数可以是其他基本类型、数组、object40 String str6 = valueOf(true);4142// 判断此字符串是否匹配给定的正则表达式43 String regEx = "\\\\d{4}\\\\-\\\\d{1,2}\\\\-\\\\d{1,2}";44boolean res4 = str.matches(regEx);4546// 以指定的字符(正则表达式)分割字符串,得到的是数组47 String[] arr1 = str.split("o");48for (int i = 0; i < arr1.length; i++) {49 System.out.println(i + ":" + arr1[i]);50 }5152// 以指定的字符(或正则表达式)分割字符串,得到的是数组,后⾯的参数是对于分割次数的限制,为1将不会分割,得到完整的字符串,为2时,得到第⼀次分割后的内容53 String[] arr2 = str.split("o", 3);54for (int i = 0; i < arr2.length; i++) {55 System.out.println(i + ":" + arr2[i]);56 }5758// ⽤于根据新的⼦字符串替换字符串中所有匹配的⼦字符串59 String str7 = str.replace("o", "c");6061// ⽤于根据新的⼦字符串替换字符串中所有匹配正则表达式的⼦字符串62 String str8 = str.replaceAll("o", "c");6364// 使⽤给定的新的⼦字符串替换字符串中给定正则表达式的第⼀个⼦字符串65 String str9 = str.replaceFirst("o","c");6667// 判断字符串是不是空的68boolean res5 = str.isEmpty();6970 }StringBuilder的常⽤⽅法:1public static void main(String[] args) {23 StringBuilder sb = new StringBuilder("hello");4// 追加字符串5 sb.append("world!");6 System.out.println(sb);78// 在指定位置开始插⼊字符串9 sb.insert(5, " ");10 System.out.println(sb);1112// 删除指定位置的字符串13 sb.delete(5, 6);14 System.out.println(sb);1516// 替换指定位置的字符串17 sb.replace(5, 11, " boy!");18 System.out.println(sb);1920// 反转字符串21 sb.reverse();22 System.out.println(sb);23 }StringBuffer的常⽤⽅法:1public static void main(String[] args) {2 StringBuffer sb = new StringBuffer("hello");3// 追加字符串4 sb.append("world!");5 System.out.println(sb);67// 在指定位置开始插⼊字符串8 sb.insert(5, " ");9 System.out.println(sb);1011// 替换指定位置的字符串12 sb.replace(5, 6, "boy, hello");13 System.out.println(sb);1415// 删除指定位置的字符串16 sb.delete(6, 10);17 System.out.println(sb);1819// 反转字符串20 sb.reverse();21 System.out.println(sb);22 }String、StrinBuilder、StringBuffer的⽐较ng.String、ng.StringBuilder、ng.StringBuffer都使⽤了final修饰,不能被继承。
传智播客-----笔记整理(java基础-----String,StringBuffer,StringBuilde)
这两天一直比较犯迷糊,每天都不知道在忙啥,所以有些断更了,真的是,咳咳,明天就要接手新班了,对我来说是喜忧参半吧,喜的是可以锻炼一下自己的能力,忧的是怕自己做不好,不过还是尽力吧。
大纲:String:1.1String方法1.2String特点1.3 StringBuffer1.4 StringBuilder1.5 Jdk升级的目的1.6 基本数据类型对象包装类1.7基本类型======>字符串1.8 字符串=====>基本类型1.9 整数具备不同的进制体现。
2.0自动拆装箱面试题挨个走一遍吧,Let's go.String:String对象的初始化由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下:String s = “abc”;s = “Java语言”;其实按照面向对象的标准语法,其格式应该为:String s = new String(“abc”);s = new String(“Java语言”);只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。
例如String s = new String(“abc”);实际上创建了两个String对象,一个是”abc”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。
其它的构造方法的参数,可以参看String类的API文档。
1.1String方法获取获取字符串中字符的个数(长度)int length();根据位置获取字符char charAt(int index);根据字符获取在字符串中的第一次出现的位置int indexOf(int ch);【因为char类型可以转换成int(对应的是0---2^16),依据ASCII,返回-1时,表示这个字符不存在,此方法也可以判断字符是否存在。
】从指定位置进行ch的查找第一次出现位置int indexOf(int ch,int fromIndex);根据字符串获取在字符串中的第一次出现的位置int indexOf(String str);从指定位置进行ch的查找第一次出现位置int indexOf(String str,int fromIndex)根据字符获取在字符串中的最后一次出现的位置int lastIndexOf(int ch);从指定位置进行ch的查找最后一次出现位置int lastIndexOf(int ch,int fromIndex);根据字符串获取在字符串中的最后一次出现的位置int latindexOf(String str);从指定位置进行ch的查找最后一次出现位置int lastindexOf(String str,int fromIndex);获取字符串中一部分字符串,也叫子串String subString(int beginIndex,int endIndex);【包含begin,但不包含end】String substring(int beginIndex);从beginIndex到最后转换将字符串变成字符串数组(字符串的切割)String [] split(String regex):【里面的条件是一个正则表达式】将字符串变成字符数组char [] toCharArray();将字符串变成字节数组byte [] getBytes();将字符串中的字母转成大小写String toUpperCase();【大写】String toLowerCase();【小写】将字符串中的内容进行替换String replace(char oldch,char newch);String replace(String s1,String s2);将字符串两端的空格去除String trim();将字符串进行连接String concat(String str);判断两个字符串内容是否相同boolean equals(Object obj);【复写Object的方法,所以传递的是Object对象】boolean equalsIgnoreCase(String str);忽略大写比较字符串内容。
异常,throw和throws关键字的使用,String和StringBuffer的使用和方法
异常,throw和throws关键字的使⽤,String和StringBuffer的使⽤和⽅法异常的捕获及处理机制Java中,异常的⽗类是Throwable,Throwable有两个⼦类:Exception:是异常,是异常的最⾼⽗类异常出现之后,程序中断运⾏。
语法:try{ }catch(){ }如果try中没有出现异常,则会将try中的代码运⾏,⽽不运⾏catch中的代码。
如果try中出现异常,则与之前的相反。
当然,我们在开发中,catch中可能出现的异常对象,⼀般不使⽤具体的异常对象,⽽是使⽤Exception,处理所有的异常。
try中可能出现的异常特别多,其他的异常都是⽤exception进⾏处理,但是要对算术⼀场进⾏单独处理,多重catch的操作可以单独处理异常,⽐如try中有多个异常进⾏异常的处理在开发中⼀定要注意,在使⽤多重catch时,最⾼异常的⽗类⼀定要写在最后⼀个catch中。
使⽤finally{}表⽰不管有没有出现异常都会执⾏的代码。
throw和throws关键字的使⽤:throws:向上抛出异常,表⽰本⽅法不处理异常,⽽是在调⽤本⽅法的地⽅处理throw:⾃定义异常,在开发中使⽤⽐较少,开发⾃⼰的框架的时候,才会⾃⼰定义⾃⼰的异常。
String类;字符串最⾼的不是类,⽽是接⼝:CharSequence是字符串最⾼的接⼝,此接⼝常⽤的两个实现类:StringStringBuffer,接⼝和实现类的对象,都叫做字符串对象。
对于String和StringBuffer的操作还是有区别的。
StringBuffer的两个常⽤⽅法:int length:取得字符串对象的长度String toStrong:将其它类型的字符串对象转换成String的字符串对象String类的实例化⽅式:通过构造⽅法实例化对象通过直接赋值的形式0String类的使⽤规则:字符串可以⽤加号相连双引号能够调⽤String类中的⽅法,说明双引号围起来的就是⼀个字符串对象。
StringBuffer的一些方法
StringBuffer的一些方法注:对StringBuffer的一些了解,首先StringBuffer是一个类,所以在使用的时候要创建实例,当然在创建的同时,这个实例化会在缓冲区中产生。
所以在被调用的时候会很方便,速度远远大于String。
StringBuffer在每次输出或者进行其他操作的时候都会自动转化成String类型的。
因为.toString()方法在ng中的方法,而我们建的包在这个包的下面●String和StringBuffer之间的比较例如://增强型字符串StringBuffer buffer=new StringBuffer("hello");System.out.println(buffer.toString());//StringBuffer可以和String类型相互转换String s=buffer.toString();System.out.println(s);//StringBuffer和String比较永远为falseSystem.out.println(buffer.equals(s));注:StringBuffer和String比较永远为false那String和StringBuffer之间是如何比较的呢?//将类型进行转换字符串转为StringBufferString s=new String("hello");StringBuffer buffer=new StringBuffer(s);StringBuffer转为StringString str="hello";StringBuffer buffer=new StringBuffer("hello");String s=buffer.toString();●1.append()方法StringBuffer的append()和String中的concat()之间的区别String str="hello";StringBuffer buffer=new StringBuffer("hello");str.concat(" niit");//使用StringBuffer进行字符串添加buffer.append(" niit");System.out.println(str);System.out.println(buffer);结果是:hellohello niit让我们大吃一惊吧。
StringBuffer方法
StringBuffer⽅法StringBuffer⽅法public StringBuffer append(String s)将指定的字符串追加到此字符序列。
public StringBuffer reverse()将此字符序列⽤其反转形式取代。
public delete(int start, int end)移除此序列的⼦字符串中的字符。
public insert(int offset, int i)将int 参数的字符串表⽰形式插⼊此序列中。
insert(int offset,String str)将str参数的字符串插⼊此序列中。
replace(int start, int end,String str)使⽤给定String中的字符替换此序列的⼦字符串中的字符。
多维数组String[][] str = new string[3][4];Arrays类public static int binarySearch(Object[a, Object key)⽤⼆分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。
数组在调⽤前必须排序好的。
如果查找值包含在数组中,则返回搜索键的索引;否则返回(-(插⼊点-1)。
public static boolean equals(longa, longa2)如果两个指定的long型数组彼此相等,则返回true。
如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。
换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。
同样的⽅法适⽤于所有的其他基本数据类型(Byte,short,Int等)。
public static void fill(int[a, int val)将指定的int值分配给指定int型数组指定范围中的每个元素。
同样的⽅法适⽤于所有的其他基本数据类型(Byte,short,Int等)。
Java基础篇--字符串处理(StringBuffer)
Java基础篇--字符串处理(StringBuffer)字符串处理在Java中最常将字符串作为String类型对象来处理。
同时String中也提供了很多操作字符串的函数(可⾃⾏查阅资料),⽽本篇将介绍StringBuffer如何操作字符串。
StringBuffer是使⽤缓冲区的,本⾝也是操作字符串的,但与String类不同,String类中的内容⼀旦声明之后不可改变,改变的只是其内存地址的指向,⽽StringBuffer中的内容是可以改变的,对于StringBuffer⽽⾔,本⾝是⼀个具体的操作类,所以不能像String那样采⽤直接赋值的⽅式进⾏对象实例化,必须通过构造⽅法完成。
StringBuffer连接字符操作当⼀个字符串的内容需要被经常改变时就要使⽤StringBuffer在StringBuffer中使⽤append()⽅法,完成字符串的连接操作实例操作⼀:字符串连接操作(append)代码:package字符串处理;public class StringBufferDemo01{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("Hello ") ; // 向StringBuffer中添加内容buf.append("World").append("!!!") ; // 可以连续调⽤append()⽅法buf.append("\n") ; // 添加⼀个转义字符buf.append("数字 = ").append(1).append("\n") ; // 添加数字buf.append("字符 = ").append('C').append("\n"); // 添加字符buf.append("布尔 = ").append(true) ; // 添加布尔值System.out.println(buf) ; // 直接输出对象,调⽤toString()}};打印结果:Hello World!!!数字 = 1字符 = C布尔 = true实例操作⼆:字符串添加内容(insert)public class StringBufferDemo03{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("World!!") ; // 添加内容buf.insert(0,"Hello ") ; // 在第⼀个内容之前添加内容System.out.println(buf) ;buf.insert(buf.length(),"偶my耶~") ; // 在最后添加内容System.out.println(buf) ;}};打印内容Hello World!!Hello World!!偶my耶~实例操作三:字符串反转(reverse)package字符串处理;public class StringBufferDemo04{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("World!!") ; // 添加内容buf.insert(0,"Hello ") ; // 在第⼀个内容之前添加内容String str = buf.reverse().toString() ; // 将内容反转后变为String类型System.out.println(str) ; // 将内容输出}};打印内容:!!dlroW olleH实例操作四:替换字符串指定内容(replace)public class StringBufferDemo05{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("Hello ").append("World!!") ; // 向StringBuffer添加内容buf.replace(6,11,"偶my耶") ; // 将world的内容替换System.out.println("内容替换之后的结果:" + buf) ; // 输出内容}};打印内容:内容替换之后的结果:Hello 偶my耶!!实例操作五:字符串截取(substring,delete)package字符串处理;public class StringBufferDemo06{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("Hello ").append("World!!") ; // 向StringBuffer添加内容buf.replace(6,11,"偶my耶") ; // 将world的内容替换String str = buf.substring(6,11) ; // 截取指定范围的内容// String str = buf.delete(6,11).toString() ;// 删除指定范围中的内容System.out.println(buf);System.out.println("内容替换之后的结果:" + str) ; // 输出内容}};打印结果Hello 偶my耶!!内容替换之后的结果:偶my耶!实例操作六:查找指定内容(indexOf)package字符串处理;public class StringBufferDemo08{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("Hello ").append("World!!") ; // 向StringBuffer添加内容if(buf.indexOf("Hello")==-1){System.out.println("没有查找到指定的内容") ;}else{ // 不为01表⽰查找到内容System.out.println("可以查找到指定的内容") ;}}};打印内容可以查找到指定的内容在StringBuffer中还有许多的函数就不⼀⼀介绍了!想要更深去了解可查阅相关资料,下⾯介绍⼀个使⽤String和StringBuffer来操作字符串的案列案列之⼩写⾦额变⼤写⾦额package com.lh.bean;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class StringUtil {private String money; //转换之前的数字⾦额private String submoneyCN[]={"","拾","佰","仟"}; //表⽰数字位数的数组private String numberCNN[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; //⼤写数字的数组private String je="零壹贰叁肆伍陆柒捌玖"; //⼤写的数字(0-9)private String cdw="万仟佰拾亿仟佰拾万仟佰拾元⾓分"; //⾦额单位public StringUtil(){} //默认的构造⽅法public void setMoney(String money){this.money=money;}public String getMoney(){return convert(this.money);}/*** 转换数字⾦额为⼤写⾦额* @return返回转换后的⼤写⾦额*/public String convert(String money){String formatCN="";int point=money.indexOf("."); //判断字符串是否包含⼩数点if(point!=-1){String money1=money.substring(0,point); //⼩数点之前的部分String money1_1=(new StringBuffer(money1).reverse()).toString();//字符串倒序String money2=money.substring(point+1); //⼩数点之后的部分if(money2.length()<2){ //如果⼩数点后的部分少于两位,⽤"0"补齐if(money2.length()==0)money2="00";elsemoney2+="0";}else//如果⼩数点后的位数⼤于2位,则只前2位money2=money.substring(point+1,point+3);int len = money1_1.length(); //字符串反转之后,⼩数点之前的字符位数int pos=len-1;String sigle="";boolean allhavenum=false;boolean havenum=false;boolean mark=false; //设置⼀个开关变量,若当前数为"0",将该值设为true;不为"0"时设为false/**以下代码为读出⼩数点左⾯的部分*/while(pos>=0){sigle=money1_1.substring(pos,pos+1);//截取1位数字,⽐如数字1234.56,将左侧的字符串反转,值为4321,则截取的值为1 /**读取“亿单元”的代码。
StringBuffer
StringBuffer StringBuffer简介:: StringBuffer是⼀个字符的缓冲区,如果需要频繁的对字符串进⾏拼接时,建议使⽤StringBuffe。
⼯作原理: StringBuffer的底层是⼀个char类型的数组,如果没有明确设定,则系统会⾃动创建⼀个长度为16的char类型数组,在使⽤数组的时候,如果长度不够了,则会通过拷贝对数组进⾏扩容,所以使⽤StringBuffe时最好预测并且⼿动进⾏初始化长度,这样能够减少数组的拷贝,从⽽提⾼效率。
StringBuffer与String的区别: String是不可变字符序列,储存在字符串常量池中 StringBuffer的底层是char类型数组,系统会对该数组进⾏扩容 StringBuffer 的构造⽅法: 如果没有明确指出参数长度的话,系统会⾃动给⼀个16的长度参数。
我个⼈建议我们在使⽤StringBuffer我们要提前预估⼀个长度。
如果我们传递的是⼀个字符串String类型,那么这个StringBuffer的长度就是这个String类型的字符串长度+16. public class SKT16 { public static void main(String[] args) { //如果没有明确指出长度,系统会⾃动创建长度16; StringBuffer sb=new StringBuffer(); System.out.println(sb.capacity()); //明确长度⼀百 //在使⽤这个的时候,建议预估⼀个长度 StringBuffer sb1=new StringBuffer(100); System.out.println(sb1.capacity()); //如果我们传递的是String类型的参数,那么这个StringBuffer长度就是参数的长度+16 StringBuffer sb2=new StringBuffer("monkey"); //长度为什么不是6⼆⼗22呢,因为系统会在你传递进去的字符串长度基础上+16的长度 System.out.println(sb2.capacity()); }}。
