Java中String类与StringBuffer类的实用操作

Java中String类与StringBuffer类的实用操作

String类:

String类的构造器:

  public String();空构造
  public String(byte[] bytes);		//把字节数组转换成字符串
  public String(byte[] bytes,int index,int length);		//把字节数组的一部分转换成字符串,index 表示开始位置
  public String(char[] arr);	//把这个字符数组转换成字符串
  public String(char[] arr,int index,int count);	//字符数组从index开始转换成String字符转换count个String类方法:

需要掌握的方法:

  byte[] arr = str.getBytes();			//把字符串转换成字节数组,输出的是码表值 		char[] arr =
  str.toCharArray();				//将字符串转换成字符数组 		String str =
  String.valueOf(arr);			//将任意形态数组转换成字符串,是个静态的方法,用方法名调用 		String str =
  String.valueOf(int i);	//将int型数据转换成字符串 		String str =
  String.valueOf(对象);		//调用对象的toString方法,打印对象信息
  字符串的替换与去除 		
  String str = str1.replace('a','b');		//用b替换a 		
  String str = str.replace("ab","cd");	//用cd替换ab 		
  String str =str.trim();				//去除两端的空格

  int num = str.compareTO(str2);			//比较两个字符串,从左至右比较unicode表

判断类

 str.equals(str2);		//判断str1与str2是否相等,返回boolean
  str.equalsIgnoreCase(str2);	//判断str1与str2是否相等,忽略大小写,返回boolean
  str.contains(str2);		//判断大字符创中是否有包含有小字符串
  str.stratsWith(str2);	//判断字符串是否以某个字符串开头
  str.endsWith(str2);		//判断字符串是否以某个字符串结尾
  str.isEmpty();			//判断字符串是否为空	空返回true

字符串的查找与截取

  str.length();		//获得字符串的长度 		char c =
  str.charAt(5);		//根据索引获取字符串对应位置的字符。返回一个char.
  str.indexOf('a');		//根据char字符返回int型索引,如果不存在返回-1 
  str.indexOf("ab");		//根据字符串返回a的int型索引,如果不存在返回-1 
  str.indexof('a',3);		//从指定位置开始,向后找。例:从索引3开始,往后找a
  str.lastIndexof('a');	//从后往前找 		str.lastIndexof('a',7);	//从指定索引向前找
  str.substring(5);		//从指定位置开始截取字符串,包含头,默认到末尾。需用新的字符串接收
  str.substring(5,8);		//从指定位置开始截取字符串,到指定的8,包含头,不包含尾

需了解的方法:

  String str1 = str.toLowerCase();				//把字符串转成小写 		String str1 =
  str.toUpperCase();								//把字符串转成大写
  str1.concat(str2);								//把字符串进行拼接,但只能字符串跟字符串拼接

StringBuffer类:

StringBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,底层是一个长度为16的字符组
当调用添加方法时,不会再重新创建对象,在不断的向原缓冲区添加字符。
StringBuffer是可变的字符序列

StringBuffer类的构造器:

  StringBuffer sb = new StringBuffer();		//空参构造,创建一个默认长度为16的容器
  StringBuffer sb = new StringBuffer(10);		//单int型构造,10是容器的大小
  StringBuffer sb = new StringBuffer("dsd");	//得到初始内容为dsd且长度为19的容器

StringBuffer类常用方法

//获取对象的容器大小

  sb.length();			//得到的是容器中的字符个数,实际值
  sb.capacity();			//得到的是容器的初始容量的大小。理论值。

//往StringBuffer数据类型中添加信息

  sb.append();		//可以往括号里面添加任何类型的元素,但都是指向同一个对象,可以不需要新的变量来接收。
  sb.insert(3,"dsd");		//在指定位置添加元素。例:在3索引的位置添加dsd,后面元素依次向后挪。

//删除元素

  sb.deleteCharAt();		//根据索引,删除指定位置的元素
  sb.delete(0,2);			//根据索引,删除指定位置到指定位置的元素。删除的是包含头,不包含尾的元素
  sb.delete(0,sb.length());//清空缓存区
  //注意!返回值不在是StringBufferr本身,而是一个String类型。 		
  String str =sb.substring(3);	//从指定索引位置截取到末尾。 		
  String str =sb.substring(1,5);	//从指定索引位置截取到指定索引位置。也是含头,不含尾

//替换元素

  sb.replace(0,3,"dsd");	//根据索引,替换元素。同样包含头,不包含尾。
  sb.reverse();			//反转StringBuffer对象字符串

//String到StringBuffer的转换

  StringBuffer sb = new	StringBuffer("dsd");	//通过构造器,把字符串转换为StringBuffer对象。
  sb.append("dsd");		//通过append方法把字符串传入无参构造器,转换为StringBuffer对象。

//StringBuffer到String的转换

  String str = new String(sb);	//通过String构造器传入一个StringBuffer对象,来转换
  String str = sb.toString();		//调用toString方法,返回一个字符串 		
  String str =sb.substring(0,sb.length());	//通过substring方法,截取全部,返回String类型

StringBuilder类:

StringBuilder和StringBuffer中的方法,构造器全部一致,区别只在于StringBuffer是线程安全的,StringBuilder是线程不安全的。
线程安全的话,效率会比较低。但是比较安全 线程不安全的话,效率会比较高,但是比较不安全。

两个小例子

例1:把一串字符串转变成第一个字符大写,其余小写的格式。

	private static void startBingAndSmall() {
		// 把一个字符串的首字母转换成大写,其余为小写。
		// 链式编程,只要保证每次调用的方法返回的是对象,就可以继续调用。
		String str = "caiXInSB";

		String strStart = str.substring(0, 1);
		String strThen = str.substring(1);
		strStart = strStart.toUpperCase();
		strThen = strThen.toLowerCase();
		System.out.println(strStart + strThen);
	}

在这里插入图片描述
例2:找出大字符串中的小字符串
方法1:使用substring方法

	private static void findTheString() {
		//找出大字符串中的小字符串
		String str = "xuexi!woaixuexi,xuexiaiwo,wuluxuexiaibuaiwo,wodouaixuexi";
		System.out.println("原字符串为:"+str);
		int count = 0;
		int index = 0; // 根据字符串返回a的int型索引,如果不存在返回-1
		while((index = str.indexOf("xuexi")) !=-1){
				str = str.substring(index+5);		//从指定位置开始截取字符串,到指定的8,包含头,不包含尾
				count++;
		}
		System.out.println("字符串中有"+count+"个“xuexi”");
		}

在这里插入图片描述

方法2:使用正则表示式切割
使用正则 切割后得到的是剩余的元素,若需要得到切割了几次的信息,只需要在原字符串后面加个" "空格字符串,那么切割次数就会等于数组的长度减一。因为若是第一个元素是正则时,切割后都会返回一个空字符串给arr[0];若是最后一个元素是正则,则不后返回一个空字符串给数组的最后一位。所以可以自己加个空格字符串在最后,当正则在字符串的最后时,切割后都还有一个空格字符串。

	private static void findTheString() {
		//找出大字符串中的小字符串
		String str = "xuexi!woaixuexi,xuexiaiwo,wuluxuexiaibuaiwo,wodouaixuexi";
		System.out.println("原字符串为:"+str);
		str += " ";
		String[] arr = (str+" ").split("xuexi");
		System.out.println(arr.length-1);
		}

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值