Disclaimer: This article is a blogger original article, follow the CC 4.0 BY-SA copyright agreement, reproduced, please attach the original source link and this statement.
Java——String和StringBuffer
I was a novice, to write blog for self-review, self-summary.
If wrong, please point out heavyweights.
Reference materials: zero-based learning Java
Look directly cases
public class StringBufferTest {
public static void main(String args[]){
/*
StringBuffer类用来处理可变字符串。
如果要修改一个StringBuffer类字符串,与String比,
不需要再创建新的字符串对象,直接操作原来字符串即可。
*/
/*以下为StringBuffer类构造器*/
/*①默认构造器*/
StringBuffer sb1=new StringBuffer();
System.out.println("默认构造容量"+sb1.capacity());
//默认的容量是16个字符
System.out.println("默认构造长度"+sb1.length());
/*②设定容量大小的构造器*/
StringBuffer sb2=new StringBuffer(40);
System.out.println("设定容量大小后的容量"+sb2.capacity());
System.out.println("设定长度大小后的长度"+sb2.length());
//StringBuffer sb=new StringBuffer(int x);
//扩充内存容量:ensureCapacity(int x);
//改变字符串长度:setLength(int x);
sb2.ensureCapacity(100);
sb2.setLength(50);
System.out.println("扩充后的容量"+sb2.capacity());
System.out.println("扩充后的长度"+sb2.length());
/*以下为对StringBuffer类字符串的处理*/
/*①初始化字符串, 连接字符串*/
StringBuffer sb3=new StringBuffer("李帅是一个优秀");
sb3.append("的程序员");
System.out.println("连接后的字符串:"+sb3);
sb3.setLength(2);
System.out.println("设定长度后的字符串:"+sb3);
/*②取字符串的单个字符*/
StringBuffer sb4=new StringBuffer("李帅很优秀");
System.out.println("取单个字符:"+sb4.charAt(1));
/*③对单个字符串赋值*/
StringBuffer sb5=new StringBuffer("小李很帅");
sb5.setCharAt(1, '毛');
System.out.println("替换字符后的字符串:"+sb5);
/*④指定位置插入字符串*/
StringBuffer sb6=new StringBuffer("我是一个");
sb6.insert(4, "学生");
System.out.println("插入后的字符串:"+sb6);
/*⑤提取子字符串*/
StringBuffer sb7=new StringBuffer("我是一个程序员啊");
System.out.println("substring:"+sb7.substring(2,7));
/*从第三个元素开始到第七个元素 (第八个元素不算)*/
/*
substring(int index)指提取从index位置开始到最后所有字符
substring(int begin,int end)指提取从begin位置开始,
到end结束 之间所有字符
*/
/*⑥倒置字符串的内容*/
StringBuffer sb8=new StringBuffer("我是一个程序员");
System.out.println("倒置后的字符串:"+sb8.reverse());
}
}
public class StringTest {
public static void main(String args[]){
/*String类被定义成final,
因为若String允许被继承,则其被频繁使用,可能会降低程序性能
*/
/*
在Java中,处理小的文本建议用String类,会很方便;
处理大型文本建议用StringBuffer类。
String类的内容和长度是固定的,
即一旦产生一个字符串,其对象就不可变。
*/
String str1="very";
str1=str1+"good";
System.out.println("str1:"+str1);
//虽然str1发生改变,但实际上是放弃了原来的空间,生成了一个新的实例。
/*以下为String类的构造器*/
/*①字节参数的构造器*/
byte[]b={97,98,99};
String str2=new String(b);
System.out.println("str2:"+str2);
/*②获取指定字节数的构造器*/
byte[]c={97,98,99,100,101,102};
String str3=new String(c,3,2);
/*
String(byte[]bytes,int offset,int length)
选取字节数组中从offset位置起,向后length长度内的字符串
*/
System.out.println("str3:"+str3);
/*③字符数组的构造器*/
char[]d={'w','e','l','c','o','m','e'};
String str4=new String(d);
System.out.println("str4:"+str4);
/*④截取部分字符串数组内容的构造器*/
char[]e={'w','e','l','c','o','m','e'};
String str5=new String(e,3,4);
/*
String(char[]value,int offset,int length)
选取字节数组中从offset位置起,向后length长度内的字符串
*/
System.out.println("str5:"+str5);
/*以下为字符串的处理方法*/
/*①串连接*/
String str6="you";
String str7="welcome";
System.out.println("concat:"+str6.concat(str7));
/*②提取子字符串*/
String str8="We are students";
System.out.println("substring:"+str8.substring(2,10));
/*从第三个元素开始到第十个元素 (第十一个元素不算)*/
/*
substring(int index)指提取从index位置开始到最后所有字符
substring(int begin,int end)指提取从begin位置开始,
到end结束 之间所有字符
*/
/*③从字符串中分解字符*/
String str9="abcdefghijk";
System.out.println("charAt:"+str9.charAt(1));
/*charAt返回相应位置的一个字符,
charAt(1)就是取第二个位置的字符*/
/*④获取字符串长度*/
System.out.println("length:"+str9.length());
/*⑤测试字符串是否相等*/
String str10="admini";
String str11="Admini";
if(str10.equals(str11))
{System.out.println("区分大小写相同");}
else if(str10.equalsIgnoreCase(str11))
{System.out.println("不区分大小写相同");}
else System.out.println("这两个字符段无论如何不相同");
/*
equals(String str)测试字符串是否相等
如果忽略大小写的话,可以用equalsIgnoreCase(String str)测试
equals比较的是两个对象的内容,只要不对其进行重载,
它就和"=="一样。在实际编程中,建议使用equals方法
*/
/*⑥查找特定子串*/
String str12="是一个很优秀的程序员";
System.out.println("indexOf:"+str12.indexOf("个"));
System.out.println("endsWith:"+str12.endsWith("员"));
System.out.println("startsWith:"+str12.startsWith("明"));
/*
indexOf(字串内容):帮助查找子串,返回的是该子串的位置
如果返回负数,说明没有找到该子串
endsWith(字串内容):测试当前字符串是否以子串内容为结尾
startsWith(字串内容):测试当前字符串是否以子串内容为开始
*/
/*toString()方法*/
System.out.println(str12.toString());
/*toString()方法:先将对象中的字符串提取出来,然后再进行输出
对于Java语言的类库来说,一般可以省略此方法
但如果是自己设计的类,最好加上这个方法,养成编程的良好习惯。
*/
}
}