【java基础】String类和StringBuffer类知识点及练习

(一)基础知识
1.String类的常用方法:
(1)Split:分割字符串
(2)equals:判断两个字符串是否相同
(3)substring:截取字符串
(4)startsWith:判断字符串是否以参数字符串开始
(5)endsWith:判断字符串是否以参数字符串结尾
(6)toUpperCase:把字符串中的英文字母转换成大写字母
(7)toLowerCase:把字符串中的英文字母转换为小写字母
(8)indexOf:返回参数字符串在另一个字符串第一次出现的位置
(9)charAt:返回一个字符串指定位置的字符
(10)replace:替换字符串
(11)trim:去掉字符串前后的空格
2.String,StringBuffer,StringBuilder区别:
StringBuffer线程安全但效率低,StringBuilder线程不安全但效率高。
String拼接字符串的方法是+较为占用内存,StringBuffer用append()方法拼接。
3.类型之间的转换:
(1)String对象转换成StringBuffer对象:利用StringBuffer的构造方法

String s=“hello”;//String s=new String(“hello”);
StringBuffer sb=new Stringbuffer(s);

(2)StringBuffer对象转换为String对象:利用StringBuffer的toString()方法

StringBuffer sb=new StringBuffer(“hello”);
String s=sb.toString();

(3)字符数组转化为String类:利用String的valueOf()方法或者Arrays类的toString()方法或者For循环一一赋值

char[] ch={'a','b'};
//char[] ch=new char[2];ch[0]='a';ch[1]='b';
String s=String.valueOf(ch);

或者:

char[] ch={'a','b'};	
String s=Arrays.toString(ch);

或者:

char[] ch={'a','b'};
String s="";
for(int i=0;i<ch.length;i++){
	s=s+ch[i];
}

(4)String类转换为字符数组:转换为StringBuffer对象用其toCharArray()方法

String s=”hello”;
StringBuffer sb=new StringBuffer(s);
char[] ch=strb.toCharArray();

(二)练习
1.获取指定字符串出现在字符串中出现的次数:
//法一:去掉不同于该指定字符串的其他字符串(将他们用空字符替换掉)后,得到所有该字符串的总长度除以该指定字符串的长度

static int getDisplayTimes(String str,String s){
		int count = (str.length()-str.replaceAll(s, "").length())/s.length();
		return count;
	}

//法二:

static int getDisplayTimes(String s,String s1){
		int count=0;
		int index=0;
		for(int i=0;i<s.length();i=index+s1.length()){
			index=s.indexOf(s1,i);//从下标为i开始检索第一个出现的s1
			if(index!=-1){
				count++;
			}else{
				break;
			}
		}
		return count;
	}

//法三:包含小字符串则count+1并且将大字符串赋值为其后的字符串再继续检索

static int getDisplayTimes(String s,String s1) {
		int count=0;
		for (int i = 0; i < s.length(); i++) {
			if(s.contains(s1)) {
				s=s.substring(s.indexOf(s1)+s1.length(), s.length());
				count++;
			}
		}
		return count;
	}

2.给定一个路径取其后缀名并输出:

static void getSuffix(String path){
		String p=path.substring(path.lastIndexOf('.'));
		System.out.println(p);
	}

3.固定字符在一个字符串中出现的次数:

static int getCharCount(String s,char ch){
		int count=0;
		for(int i=0;i<s.length();i++){
			char q=s.charAt(i);
			if(q==ch){
				count++;
			}
		}
			return count;
	}

4.将字符数组char[] ch={‘a’,‘b’,‘c’};转换为字符串缓冲对象对象,列举三种方法实现
//法一:

char[] ch={'a','b','c'};
		StringBuffer sb=new StringBuffer();
		for(int i=0;i<ch.length;i++){
			sb.append(ch[i]);//sb.insert(i,ch[i]);
		}

//法二:

	char[] ch={'a','b','c'};
		StringBuffer sb=new StringBuffer(String.valueOf(ch));
	//	StringBuffer sb=new StringBuffer(Arrays.toString(ch));

//法三:

char[] ch={'a','b','c'};
		String s="";
		for(int i=0;i<ch.length;i++){
		     s=s+ch[i];
		}
		StringBuffer sb=new StringBuffer(s);

5.写一个方法要求如下:
1)字符串长度固定32位
2)其中序号3位,从1开始到999结束。不满3位时左补空格补满3位
3)字母从序号的最后一位开始每四个空格输出一个字母,也就是说每组字母加上空格一共占5位。一共输出四个字母
4)要求每一组字母是随机出现的不可重复的大写字母。
例如:

在这里插入图片描述
<中间略>
在这里插入图片描述

public class StringTest {
	public static void main(String[] args) {
		StringBuffer s = new StringBuffer(32);
		for (int i = 0; i < 1000; i++) {
			s.delete(0, s.length());
			int j, count = 0;
			char[] ch = new char[4];
			if (i < 10) {
				s.append("  ").append(i);
			}else if (i < 100) {
				s.append(" ").append(i);
			} else {
				s.append(i);
			}
			for (;;) {
				char c = (char) (Math.random() * (26) + 65);
				for (j = 0; j < ch.length; j++) {
					if (c == ch[j]) {
						break;
					}
				}
				if (j == ch.length) {
					ch[count] = c;
					count++;
					if (count == 4) {
						break;
					}
				}
			}
			for (int k = 0; k < 4; k++) {
				s.append("    ").append(ch[k]);
			}
			System.out.println(s);
		}
	}
}

//随机数去重方法可参考下方链接:
随机数去重方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值