Java——String和StringBuffer

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.
This link: https://blog.csdn.net/qq_45613931/article/details/102536548

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语言的类库来说,一般可以省略此方法
		  但如果是自己设计的类,最好加上这个方法,养成编程的良好习惯。 
		  */
	}
}

Guess you like

Origin blog.csdn.net/qq_45613931/article/details/102536548