String字符串类基本概念及函数

(一)基本概念

API中的解释:

String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。
字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。
String对象是不可变——是因为String类是final的

(二)String的构造函数

常用的几种构造方法

  • String( )
  • String( byte[] bytes )
  • String( char[] value )
  • String( String original )
  • String( StringBuffer buffer )/String( StringBuilder builder )
    Tips:
//String str = new String({'a','b','c'});
//会报错:不能直接放进去
char[] arr = {'a','b','c'};
String str = new String(arr);

(三)String的常用成员函数

length:长度
  • int length()

     length/length()/size()区别:
     - length是属性,属于数组
     - length()是方法,属于对象
     - size()是集合的方法,用于计算集合的长度
    
indexOf:索引,第一次出现位置
  • int indexOf(int ch)
  • int indexOf(int ch,int fromIndex)
  • int indexOf(String str)
  • int indexOf(String str,int fromIndex)
lastIndexOf:索引,最后一次出现位置
substring:截取子串
  • String substring(int beginIndex)

  • String substring(int beginIndex,int endIndex)

     注意: 子串包括beginIndex,不包括endIndex。
    
split:拆分字符串
  • String[] split(String regex)

  • String[] split(String regex,int limit)

     根据正则表达式拆分
    
toCharArray:字符串转字符数组
getBytes:字符串转字节数组
toLowerCase:字符串中字母转小写
toUpperCase:字符串中字母转大写
replace:字符串中内容替换
  • String replace(char oldChar,char newChar)
  • String replaceAll(String regex,String replacement)
  • String replaceFirst(String regex,String replacement)
trim:字符串两端去除空格
  • String trim()
concat:字符串连接
equals:比较
equalsIgnoreCase:比较,不考虑大小写
contains:是否包含子串
startsWith:是否以指定字符串开头
  1. boolean startsWith(String prefix)
  2. boolean startsWith(String prefix,int toffset):从指定索引处是否以指定前缀开始
endsWith:是否以指定字符串结尾
  1. boolean endsWith(String prefix)
compareTo:按字典顺序比较
compareToIgnoreCase:按字典比较,不考虑大小

(四)String方法编程题练习

将字符串首字母大写,其余字母小写
	String test1(String str){
		String temp1 = str.substring(0, 1).toUpperCase();//取得首字母,将首字母大写
		String temp2 = str.substring(1,str.length()).toLowerCase();//其余小写
		String s = temp1.concat(temp2);
		return s;
	}
给定一个字符串,按字典顺序排序
	String test2(String str){
		//冒泡排序针对的是数组,所以先转为数组再进行
		char[] ch = str.toCharArray();
		for (int i = 0; i < ch.length; i++) {
			for (int j = 0; j < ch.length-i-1; j++) {
				char temp;
				if(ch[j] > ch[j+1]){
					temp = ch[j+1];
					ch[j+1] = ch[j];
					ch[j] = temp;
				}
			}
		}
		String s = String.valueOf(ch);
		return s;
	}
一个子串在字符串中出现次数
	int test3(String str,String subStr){
		int i = 0;//次数
		String temp = str;
		int index;//索引
		while((index = temp.indexOf(subStr)) != -1){//subStr第一次出现的索引
			i++;
			temp = temp.substring(index+subStr.length());//在余下的字符串继续找有没有子串
		}
		return i;
	}
求两个字符串的最大相同子串
	String test4(String str1,String str2){
		String subStr;
		//外层:子串长度的确定str1.length()-i
		for (int i = 0; i < str1.length(); i++) {
			//内层:截取其中相应长度的子串,终止条件k<str1.length()+1(边界)
			//j和k固定子串长度,j++和k++使子串右移
			for (int j = 0, k = str1.length() - i; k != str1.length() + 1; j++, k++) {
				String temp = str1.substring(j, k);
				if(str2.contains(temp)){
					subStr = temp;
					return subStr;
				}
			}
		}
		return null;
	}
字符串反转
	String test5(String str){
		String newStr;
		char[] arr = str.toCharArray();
		char[] temp = new char[arr.length];//倒序
		for (int i = 0; i < arr.length; i++) {
			temp[i] = arr[arr.length - i - 1];
		}
		newStr = String.copyValueOf(temp);
		return newStr;
	}
实现trim()函数功能
	String test6(String str){
		String newStr = null;
		int start = 0;
		int end = str.length()-1;
		while(start <= end && str.charAt(start) == ' '){
			start ++;
		}
		while(start <= end && str.charAt(end) == ' '){
			end --;
		}
		newStr = str.substring(start, end+1);
		return newStr;
	}

(五)StringBuffer与StringBuilder

StringBuffer:线程安全的可变字符串序列
StringBuilder:线程不安全的可变字符串序列

PS:线程不安全的效率更高

常用方法:
  • append
  • insert
  • delete
  • deleteCharAt
  • replace
  • reverse
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值