字符串是一个特殊的对象:

在下面代码中体现String类中的功能:

<span style="font-size:18px;"><strong>public class SringDemo {
	
	public static void main(String[] args) {
/*
 * 字符串最大的特点:一旦初始化就不可以被改变
 * str在内存中有一个对象
 * str1在内存中有两个对象
 * 
 * String 中常用的方法 :
 * 1.获取
 * 获取字符串的长度:int length();
 * 根据索引获取字符:char charAt(int index);
 * 根据字符串获取该字符在字符串中的位置:
 * int indexOf(int char);返回的是char在字符中第一次出现的位置
 * int indexOf(int char,int fromIndex);从fromIndex指定位置开始,获取ch在字符串中出现的位置
 * 
 * int indexOf(String str);返回的是str在字符中第一次出现的位置
 * int indexOf(Sting str,int fromIndex);从fromIndex指定位置开始,获取str在字符串中出现的位置
 * 
 * 2.判断:
 * 判断一个字符串是否包含某一个字串:boolean contains(str);
 * 判断字符串中是否有内容:  boolean isEmpty();
 * 字符串是否以指定内容开头: boolean startWith(str);
 * 字符串是否以指定内容结尾: boolean endsWith(str);
 * 判断字符串内容是否相同:  boolean equals(str);
 * 判断字符串内容是否相同并忽略大小写: boolean equalsIgnoreCase();
 */
		//str是一个变量,"abc"是一个对象
		String str1 = new String("abc");
		String str2 = "abc";
		String str = "abcdeafgd";
		// 1、获取
		System.out.println(str.length());
		System.out.println(str.charAt(4));//根据索引获取字符
		System.out.println(str.indexOf('d'));//返回的是char在字符中第一次出现的位置
		System.out.println(str.indexOf('a', 3));//从fromIndex指定位置开始,获取ch在字符串中出现的位置
		System.out.println(str.lastIndexOf("a"));//反向索引一个字符串出席那的位置
		//2、判断
		String str3 = "ArrayDemo.java";
		System.out.println(str3.startsWith("Array"));//判断是否以Array开始
		System.out.println(str3.endsWith(".java"));//判断是否以.java结束
		System.out.println(str3.contains("Demo"));//判断是否包含Demo
		System.out.println(str3.isEmpty());//判断字符串是否为空
		
		
		
		
//		System.out.println(str == str1);
//		System.out.println(str == str2);
//		System.out.println(str.equals(str1));//该方法用于判断字符串是否相等
	   
	      
	}
	
}
</strong></span>
<span style="font-size:18px;"><strong>public class StringDemo {
/*
 * 转换:将字符串转换成大写或小写;
 * String toUpperCase();
 * String toLawerCase();
 * 将字符串两端的空格取去除:
 * String trim();
 * 对两个字符串进行自然顺序的比较:
 * int CompareTo(string);
 * 返回的值正数,负数,0 表示大小
 * 
 */
	public static void main(String[] args) {
		
		String str = "   Hello java";
		String str1 = "aaa";
		String str2 = "abc";
		System.out.println(str.toUpperCase());//变成大写
		System.out.println(str.toLowerCase());//变成小写/
		System.out.println(str.trim());//去除两端空格
		System.out.println(str1.compareToIgnoreCase(str2));
	}

}</strong></span>
<pre class="html" name="code"><span style="font-size:18px;"><strong>public class StringDemo {
/*
 * 替换:
 * String replace(oldchar,newchar);
 * 如果替换的字符不存在返回原来的
 * 
 * 切割:
 * String[] split(regex);
 * 
 * 获取字串:
 * String substring(int beginIndex);
 * String substring(int begin,int endIndex);
 * 获取结果包含头,不包含尾
 */
	public static void main(String[] args) {
		//替换
		String str = "hellojava";
		System.out.println(str.replace('h', 'H'));//替换指定字符
		System.out.println(str.replace("java","你好"));//替换指定字符串
		
		//切割
		String s = "张三,李四,王五";
		 
		String[] s1 = s.split(",");//以逗号为切割点
		for(String k : s1){//遍历数组
			System.out.println(k);
		}
		System.out.println(s.substring(3,5));//可以作为获取功能,获取指定位置上的字符串
		
		//获取字符串
		String s2 = "abcdefgh";
		System.out.println(s2.substring(2));//从指定位置开始获取
		System.out.println(s2.substring(2,5));//获取指定某段字符串
		
		
	}
}
</strong></span>




<pre class="html" name="code"><span style="font-size:18px;"><strong>public class Demo {
/*
 *将字符数组转换成字符串: 
 *   构造函数:String(char[]);
 *          String(char[],offest,count)
 *  静态方法:static String copyValueOf(char[]);
 *         static String copyValueOf(char[],int offext,int count);
 *         static valueOf(char[]);
 *将字符串转换成字符数组:
 *char[] toCharArray();
 *将字节数组转换成字符串:
 *构造函数:String(byte[]);
 *          String(byte[],offest,count);
 *将基本数据类型转换成字符串:
 *static String valueOf(int);
 *Static String valueOf(double);
 * 
 */
	public static void main(String[] args) {
		//将字符数组转换成字符串
		char[] arr = {'a','b','c','d','e','f','g','h'};
		String s = new String(arr);//转换成字符串
		System.out.println(s);
		String s1 = new String(arr,1,3);//转换其中的一部分
		System.out.println(s1);
		System.out.println(String.copyValueOf(arr));//静态方法的用法
		System.out.println(String.copyValueOf(arr,1,5));//转换其中的一部分(count是数组的长度)
	
		//将字符串变化成字符数组
	     String ss = "abcdsss";
	     char[] arr1 = ss.toCharArray();
	     for(char k : arr1){
	    	 System.out.println("char=" + k);
	     }
	//基本数据类型转换成字符串
	     int x = 3;
	     String n = 3 + "";
	     System.out.println(String.valueOf(x));
	     System.out.println(n);
	}

}</strong></span>
<span style="font-size:18px;"><strong>下面细节个练习的代码:</strong></span>
<pre class="html" name="code"><span style="font-size:18px;"><strong>public class StringDemo1 {
	
	public static void main(String[] args) {
		//去掉字符串两端"-"获取字符串
		String str = "--ab cd--";
		int start = 0, end = str.length() - 1;
		//从开始位置判断
		while(start <= end && str.charAt(start) == '-'){
			start++;
			//从结束位置判断
			while(start <= end && str.charAt(end) == '-'){
				end--;
			}
		}
		//System.out.println(str.trim());
		System.out.println(str.substring(start, end+1));
	}
}</strong></span>
<span style="font-size:18px;"><strong></strong></span>
<span style="font-size:18px;"><strong>public class StringDemo2 {
/*
 * 字符串翻转
 * 1.将字符串变成数组
 * 2.对数组翻转
 * 3.将数组变成字符串
 */
	
	public static void main(String[] args) {
	
		String str = "abcd efgh";
		System.out.println(reverseString(str,0,2));//怎么不可以局部翻转
		
	}
	public static String reverseString(String s,int start,int end){
		char[] chars = s.toCharArray();
		reverse(chars,start,end);
		return (new String(chars));
	}
	
	public static String reverseString(String s){
		
		return reverseString (s,0,s.length());
	}
	
	private static void reverse(char[] arr, int x, int y) {
		for(int start=x,end=y-1;start<end;start++,end--){
			swap(arr,start,end);
		}
	}
	
	private static void swap(char[] arr, int x, int y) {
		char temp = arr[x];
		arr[x] = arr[y];
		arr[y] = temp;
	}

}
</strong></span>



<span style="font-size:18px;"><strong></strong></span>



public class StringDemo {
/*
 * 替换:
 * String replace(oldchar,newchar);
 * 如果替换的字符不存在返回原来的
 * 
 * 切割:
 * String[] split(regex);
 * 
 * 获取字串:
 * String substring(int beginIndex);
 * String substring(int begin,int endIndex);
 * 获取结果包含头,不包含尾
 */
	public static void main(String[] args) {
		//替换
		String str = "hellojava";
		System.out.println(str.replace('h', 'H'));//替换指定字符
		System.out.println(str.replace("java","你好"));//替换指定字符串
		
		//切割
		String s = "张三,李四,王五";
		 
		String[] s1 = s.split(",");//以逗号为切割点
		for(String k : s1){//遍历数组
			System.out.println(k);
		}
		System.out.println(s.substring(3,5));//可以作为获取功能,获取指定位置上的字符串
		
		//获取字符串
		String s2 = "abcdefgh";
		System.out.println(s2.substring(2));//从指定位置开始获取
		System.out.println(s2.substring(2,5));//获取指定某段字符串
		
		
	}
}

 

<span style="font-size:18px;"><strong>public class StingDemo3 {

/*
 * 获取字符串中一个字符串出现的次数
 */
	public static void main(String[] args) {
		
		String str = "abkkcdakkebfakkgbakkha";
		System.out.println(getCount(str,"kk"));
	}
	public static int getCount(String str,String key){
		
		int count = 0;
		int index = 0;
		while((index = str.indexOf(key))!= -1){
			System.out.println("str" + str);
			str = str.substring(index + key.length());
			count++;
		}
			return count;
	}
}
</strong></span>
<span style="font-size:18px;"><strong>public class StringDemo4 {
/*
 * 获取两个字串中的最大相同的字串
 */
	
	public static void main(String[] args) {
		String s = "abcdhellodfgda";
		String s1 = "echellomklkji";
		System.out.println(getMaxSubString(s,s1));
	}
	public static String getMaxSubString(String s1,String s2){
		
		for(int x = 0; x < s2.length(); x++){
			for(int y = 0, z = s2.length()-x; z != s2.length()+1; y++, z++){
				String temp = s2.substring(y,z);
				//System.out.println(temp);
				if(s1.contains(temp)){
					return temp;
				}
			}
		}
		return "";
	}
}
</strong></span>

StringBuffer的特性:

<span style="font-size:18px;"><strong>public class StringBufferDemo {
/*
 * StringBuffeer:字符串缓冲区
 * 特点:
 * 长度可变化
 * 可以操作多种类型
 * 最终会通过toString转换成字符串
 * 存储:
 *    StringBuffer apppend();将指定数据添加到已有数据的结尾处
 *    插入:StringBuffer insert(index,数据);在指定位置插入
 * 
 * 删除:
 *     StringBuffer delete(start,end);//删除某一段包,含start不包含end
 * 		StringBuffer deleteCharAt(index);//查出指定位置的字符
 * 修改:(替换)
 * StringBufffer replace(start,end,str);//替换指定位置上的内容
 * void steCharAt(index,char);//替换某一个字符 (无返回)
 * 
 * 查询:
 * char charAt(index); 根据下标获取
 * int indexOf(String str); 跟字符获取下标
 * int length();字符长度
 * String substring(int start,int end);//获取一部分
 * 
 * 反转:
 * StringBuffer reverse();//反转
 * 
 * 将缓冲区中的指定字符串存储到指定字符数组中
 * void getChars(int srcBegin,int srcEnd,char[] dest,int dextBegin)
 * 参数意思:指定开始出,指定结束处,指定存储位置,指定存储开始位置
 */ 
 
	
	public static void main(String[] args) {
		
		StringBuffer sb = new StringBuffer();
		    //添加(插入)
			sb.append("abcde").append("java").append("hello");
			sb.insert(2, "qq");//在指定位置插入
			System.out.println(sb.toString());
			
			//删除
			sb.delete(1, 3);//删除一段数据
			System.out.println(sb.toString());
			sb.deleteCharAt(4);//删除指定位置上的数据
			System.out.println(sb.toString());
			
			//替换
			sb.replace(1, 3, "kk");//替换一段字符
			System.out.println(sb.toString());
			sb.setCharAt(2, 's');//替换特定字符
			System.out.println(sb);
			
			//反转
			sb.reverse();//字符串反转
			System.out.println(sb.toString());
			
			//将缓冲区中的指定字符串存储到指定字符数组中
			StringBuffer s = new StringBuffer("abcdefgh");
			char[] arr = new char[4];
			s.getChars(1, 4, arr, 1);
			for(int i = 0; i < arr.length; i++){
				System.out.println("char["+ i +"]=" + arr[i]);
			}
	}
}</strong></span>




public class StringBufferDemo {
/*
 * StringBuffeer:字符串缓冲区
 * 特点:
 * 长度可变化
 * 可以操作多种类型
 * 最终会通过toString转换成字符串
 * 存储:
 *    StringBuffer apppend();将指定数据添加到已有数据的结尾处
 *    插入:StringBuffer insert(index,数据);在指定位置插入
 * 
 * 删除:
 *     StringBuffer delete(start,end);//删除某一段包,含start不包含end
 * 		StringBuffer deleteCharAt(index);//查出指定位置的字符
 * 修改:(替换)
 * StringBufffer replace(start,end,str);//替换指定位置上的内容
 * void steCharAt(index,char);//替换某一个字符 (无返回)
 * 
 * 查询:
 * char charAt(index); 根据下标获取
 * int indexOf(String str); 跟字符获取下标
 * int length();字符长度
 * String substring(int start,int end);//获取一部分
 * 
 * 反转:
 * StringBuffer reverse();//反转
 * 
 * 将缓冲区中的指定字符串存储到指定字符数组中
 * void getChars(int srcBegin,int srcEnd,char[] dest,int dextBegin)
 * 参数意思:指定开始出,指定结束处,指定存储位置,指定存储开始位置
 */ 
 
	
	public static void main(String[] args) {
		
		StringBuffer sb = new StringBuffer();
		    //添加(插入)
			sb.append("abcde").append("java").append("hello");
			sb.insert(2, "qq");//在指定位置插入
			System.out.println(sb.toString());
			
			//删除
			sb.delete(1, 3);//删除一段数据
			System.out.println(sb.toString());
			sb.deleteCharAt(4);//删除指定位置上的数据
			System.out.println(sb.toString());
			
			//替换
			sb.replace(1, 3, "kk");//替换一段字符
			System.out.println(sb.toString());
			sb.setCharAt(2, 's');//替换特定字符
			System.out.println(sb);
			
			//反转
			sb.reverse();//字符串反转
			System.out.println(sb.toString());
			
			//将缓冲区中的指定字符串存储到指定字符数组中
			StringBuffer s = new StringBuffer("abcdefgh");
			char[] arr = new char[4];
			s.getChars(1, 4, arr, 1);
			for(int i = 0; i < arr.length; i++){
				System.out.println("char["+ i +"]=" + arr[i]);
			}
	}
}