黑马程序员———String

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

String

String类代表字符串。Java程序中的所有字符串字面值(如”abc”)都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String对象时不可变得,所有可以共享。例如:

String str = “abc”;等效于char data[] = {‘a’,’b’,’c’} String str = new String(data);

String s1 = “abc”;

String s2 = new String(“abc”);

String s3 = “abc”

s 1 = =s2 flase因为s1在内存中只有一个对象,而s2在内存中有两个对象

s1.equals(s2) true String类复写了Object中的equals方法,只要它们值相同就返回true

s1 ==s3 true

练习一:出去一个字符串两端的空格

代码:

package com.itheima;

public class StringTrDemo {
    //测试类
	public static void main(String[] args) {
		//给定字符串
		String str = "   dffd  ";
		//输出
		System.out.println(str);
		//去空格
		str = myTrim(str);
		//输出去空格后的字符串
		System.out.println(str);

	}
	public static String myTrim(String str){
		//定义角标
		int start = 0, end = str.length()-1;
		// 找出从0角标位开始第一个非空的角标
		while(start <= end&&str.charAt(start) == ' '){
			start++;
		}
		// 找出从最末角标位开始第一个非空的角标
		while(start <= end&&str.charAt(end) ==' ' ){
			end--;
		}
		//截取去过空格的字符串
		str = str.substring(start,end+1);
		//返回结果
		return str;
	}

}


 

反转字符串

class ReverseString {
	//指定开始结束位置反转
	public String reverseString(String str, int start, int end) {
		// 将字符串转化为数组
		char[] ch = str.toCharArray();
		// 将数组反转
		reverse(ch, start, end);
		//将反转后的数组转换为字符串返回
		return new String(ch);
	}
	//头尾反转
	public String reverseString(String str){
	   return reverseString(str,1,str.length());
	
	}
    //将数组反转
	private char[] reverse(char[] ch, int start, int end) {
		for (int x = start-1, y = end-1; x < y; x++, y--) {
			swap(ch, x, y);
		}
		return ch;
	}
    //交换数组中元素位置
	private void swap(char[] ch, int x, int y) {
		char temp = ch[x];
		ch[x] = ch[y];
		ch[y] = temp;
	}
	
}
//测试类
public class ReverseStringDemo {

	public static void main(String[] args) {
		ReverseString rs = new ReverseString();
		String str = "jlsdfjlsjf";
		System.out.println("反转前"+str);
		str = rs.reverseString(str);
		System.out.println("反转后"+str);
		str = rs.reverseString(str, 1,5);
		System.out.println("再次反转后"+str);

	}

}

获取一个字符串在另一个字符串中出现的次数

代码:

 

/*思路:1,定义一个计数器
2,获取要找到字符串第一次出现的位置
3,从第一出现的位置之后的字符串中再找
4,计数器加一
 * */
//测试类
public class StringCountDemo {

	public static void main(String[] args) {
		String str = "kkdjfkkdkkjiekkddfdfkk";
		int count1 = StringCount.subStringCount(str, "kk");
		int count2 = StringCount.subStringCount_2(str, "kk");
		System.out.println("count1= "+count1);
		System.out.println("count2= "+count2);
	}

}
class StringCount{
	public static int subStringCount(String str , String key){
		//计数器
		int count = 0 ;
		//起始索引
		int index = 0;
		while((index = str.indexOf(key)) != -1){
			//将索引放到第一出现可以的位置之后
			index = index + key.length();
			//从index处截取字符串
			str = str.substring(index);
			//计数器加一
			count++;
		}
		return count;
	}
	public static int subStringCount_2(String str, String key){
		//计数器
		int count = 0;
		//索引
		int index = 0;
		while((index = str.indexOf(key,index)) != -1){
			//第一次找到key位置之后从这个位置之后的索引再开始找
			index = index + key.length();
			//计数器加一
			count++;
		}
		return count;
	}
}

练习四,获取两个字符串中最大的相同子串

/*思路:
 * 1,将短的字符串按照长度递减的方式获得
 * 2,比较长的字符串是否包含此字串,如果包含,则就找到了相同的最大字串
 * */
//测试类
public class MaxSubStringDemo {

	public static void main(String[] args) {
		String str1 = "jdfsljlljdflejf";
		String str2 = "jdfsljllfddf";
		String str =MaxSubString.MaxSubString(str1, str2);
		System.out.println(str);
	}

}
class MaxSubString{
	public static String MaxSubString(String str1,String str2){
		//获取所传两个参数中较长的字符串
		String max = str1.length()>= str2.length()?str1:str2;
		//获取所传两个参数中较短的字符串
		String min = max == str1?str2:str1;
		for(int x = 0 ; x < min.length(); x++){
			for(int y = 0, z = min.length()-x;z != min.length()+1;y++,z++){
				//截取较短字符串的字串
				String subStr = min.substring(y,z);
				//判断是否包含
				if(max.contains(subStr)){
					//如果包含,就返回此字串
					return subStr;
				}
			}
			
		}
		//如果不包含返回空字符串
		return "" ;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值