Java学习笔记(String类和StringBuffer类)
Opened this issue · 0 comments
kunyuwan commented
1.String类的常用操作:
public class string {
public static void main(String[] args) {
//字符串的初始化
String str1=new String();//创建一个空的字符串
String str2=new String("abcd");//创建一个内容为abcd的字符串
char[] charArray=new char[] {'D','E','F'};
String str3=new String(charArray);//创建一个内容为字符串数组的字符串
System.out.println("a"+str1+"b");
System.out.println(str2);
System.out.println(str3);
//字符串的基本操作
String s=" ababcd edcBA ";
System.out.println("字符串的长度为:"+s.length());
System.out.println("字符串第一个字符:"+s.charAt(0));
System.out.println("字符串第二个字符:"+s.charAt(1));
System.out.println("字符c第一次出现的位置:"+s.indexOf('c'));
System.out.println("字符c最后一次出现的位置:"+s.lastIndexOf('c'));
System.out.println("子字符串第一次出现的位置:"+s.indexOf("ab"));
System.out.println("子字符串最后一次出现的位置:"+s.lastIndexOf("ab"));
//以下的都是返回一个新的字符串
System.out.println("将字符串的所有字母转换为小写:"+s.toLowerCase());
System.out.println("将字符串的所有字母转换为大写:"+s.toUpperCase());
System.out.println("去除空格后的字符串:"+s.trim());
System.out.println("从第八个字符开始的字符串:"+s.substring(7));
System.out.println("从2到5的字符串:"+s.substring(2,18));
System.out.println("用s替换掉所有的a之后的字符串:"+s.replace('a','s'));
//字符串的转换操作
String str="abcd";
System.out.print("将字符串转换为字符串数组后的结果:");
char[] Array=str.toCharArray();
for(int i=0;i<Array.length;i++) {
if(i==0) {
System.out.print(Array[i]);
}else {
System.out.print(","+Array[i]);
}
}
System.out.println();
System.out.println("将int值转换为String类型之后的结果:"+String.valueOf(12));
System.out.println("将字符串转换为大写之后的结果:"+str.toUpperCase());
//字符串的替换和去除空格的操作
String s1="itcat";
System.out.println("将it替换成cn.it:"+s1.replace("it","cn.it"));
String s2=" i t c a t ";
System.out.println("去除两端空格空格后的结果:"+s2.trim());
System.out.println("去除中间空格之后的结果:"+s2.replace(" ", ""));
//字符串的判断操作
String s3="String";
String s4="Str";
System.out.println("判断是否以字符串Str开头:"+s3.startsWith("Str"));
System.out.println("判断是否以字符串ng结尾:"+s3.endsWith("ng"));
System.out.println("判断是否包含字符串tri:"+s3.contains("tri"));
System.out.println("判断字符串是否为空:"+s3.isEmpty());
System.out.println("判断两个字符串是否相同:"+s3.equals(s4));
String s6=new String("abc");
String s5=new String("abc");
System.out.println(s6.equals(s5));//结果为true,因为s5和s6字符内容相同
System.out.println(s6==s5);//结果为false,因为s5和s6是两个对象
//字符串的截取与分割
String str4="羽毛球-篮球-乒乓球";
System.out.println("从第五个字符截取到末尾的结果:"+str4.substring(4));
System.out.println("从第五个字符截取到第六个字符的结果:"+str4.substring(4,5));
System.out.print("分割后的字符串数组中的元素分别为:");
String[] strArray=str4.split("-");
for(int i=0;i<strArray.length;i++) {
if(i==0) {
System.out.print(strArray[i]);
}else {
System.out.print(","+strArray[i]);
}
}
}
}
注:
- valueof( )方法有很多重载的形式,float,double,char等其他数据类型都可以通过此方法转为String字符串类型
- trim( )只能去除字符串两端的空格,若要去除字符串中间的空格则可使用replace()将空格转变为“”则可以删除中间的空格
- 在Sting类中的 " == "与" equals()"的区别
—equals() 方法用于比较两个字符串对象是否相等
—“ == “方法用于比较两个字符串对象的地址是否相同
String s6=new String("abc");
String s5=new String("abc");
System.out.println(s6.equals(s5));//结果为true,因为s5和s6字符内容相同
System.out.println(s6==s5);//结果为false,因为s5和s6是两个对象
2.StringBuffer的常用操作:
public class stringbuffer {
public static void main(String[] args) {
StringBuffer s=new StringBuffer("abcd");
System.out.println("插入字符e之后的字符串:"+s.append('e'));
System.out.println("在第3个字符的位置插入字符串a之后的字符串:"+s.insert(2,'a'));
System.out.println("删除第3个字符之后的字符串:"+s.deleteCharAt(2));
System.out.println("删除第3个字符到第四个字符之间的字符之后的字符串:"+s.delete(2, 3));
System.out.println("将第一个字符到第二个字符替换成str之后的字符串:"+s.replace(0, 1, "str"));
s.setCharAt(0,'a');
System.out.println("把第一个字符修改为a之后的字符串:"+ s);
System.out.println("返回StringBuffer缓冲区的字符串:"+s.toString());
System.out.println("将字符串反转:"+s.reverse());
}
}
3.String和StringBuffer的区别:
-
String类表示的是字符串常量,它的内容和长度是无法改变的,而StringBuffer表示字符串容器,其内容和长度是可以随时改变的。在操作字符串时,如果该字符串仅用于表示数据类型,则用String类即可,但是如果需要对字符串的字符进行删减操作,而使用StringBuffer类
-
String类覆盖了Object类的equals方法,而StringBuffer类没有覆盖Object类的equals()方法。
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1.equals(s2));//打印结果为true
StringBuffer sb1=new StringBuffer("abc");
StringBuffer sb2=new StringBuffer("abc");
System.out.println(sb1.equals(sb2));//打印结果为false
- String类可以用操作符“+”进行连接,而StringBuffer类对象之间不能。
String s3="a";
String s4="b";
String s5=s3+s4;//合法
System.out.println(s5);
@SuppressWarnings("unused")
StringBuffer sb3=new StringBuffer("a");
@SuppressWarnings("unused")
StringBuffer sb4=new StringBuffer("a");
//StringBuffer sb5=sb3+sb4;//编译错误