kunyuwan/blog

Java学习笔记(String类和StringBuffer类)

Opened this issue · 0 comments

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;//编译错误