Java基礎_字符串

字符串

一、字符串

    1.1、String類

    字符串是一種很常見的數據類型,在很多的編程語言中都對字符串進行了封裝;在java中,用String類封裝字符串。

    字符串最大的特點是一旦被初始化就不可以改變

    String類用於描述字符串,那麼它一定提供了多個方法對字符串進行操作,下面介紹常用的操作方法:

    1、獲取:

        int  length():獲取長度;

        char  charAt(int index):根據位置獲取字符;

        int  indexOf(int ch):根據字符獲取位置,返回的是第一次出現的位置;

        int  indexOf(int ch,int fromIndex):根據字符獲取位置,從fromIndex開始;

        int  indexOf(String str ):獲取字符串出現的位置,返回的是第一齣現的位置;

        int  lastIndexOf(int ch):反向查找,獲取的查找字符時第一次出現的位置。

    2、判斷:

        boolean  contains(String str):判斷是否包含子串;

        boolean  startsWith(String str):判斷是否以指定字符串開頭;

        boolean  endsWith(String str):判斷是否以指定字符串結尾;

        boolean  equalsIgnoreCase(String str);判斷是否相同,並忽略大小寫。

    3、轉換:

        String(char[]value):將字符數組轉換成字符串;

        static  String  valueOf(char[]):將字符數組轉換成字符串;

        char[]  toCharArray():將字符串轉成字符數組;

        byte[]  getBytes():將字符串轉成字節數組;

        static  String valueOf(int )//double float:將基本數據類型轉成字符串。

    4、替換:String replace(char oldChar,char newChar);

    5、切割:String[] split(String regex);

    6、獲取子串:String subString(int begin,int end);

    7、轉換,去除空格,比較:

        String  toUpperCase();String  toLowerCase();大小寫轉換;

        String  trim();去除兩端的空格;

        int  compareTo(String str):比較兩個字符串的大小。

下面代碼演示String類的功能:

1、簡單演示:

package itheima.day13;

public class StringDemo {

	public static void method_get(){
		
		String str ="asdffaghha";
		//長度
		sop(str.length());
		//獲取
		sop(str.lastIndexOf('s'));
		sop(str.charAt(4));
		sop(str.lastIndexOf('a'));
	}
//	切割
	public static void method_split(){
		String s = "zhangsan,lisi,wangwu";
		String[] arr = s.split(",");
		for(int i=0;i<arr.length;i++)
			sop(arr[i]);
	}
	
	public static void main(String[] args) {
		
		String s1 = "abc";
		String s2 = new String("abc");
		
//		System.out.println(s1 == s2);//false
//		System.out.println(s1.equals(s2));//true
//		method_get();
		method_split();
	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
}
2、練習:
package itheima.day13;

public class StringTest {
	public static void main(String[] args) {
//		1、
		String str1 = "    fgfh fghfdb    ";
		String newStr = myTrim(str1);
		sop(newStr);
//		2、
		String reveStr =reverseString(newStr);
		sop(reveStr);
//		3、
		String str2 ="KKJJHHNNBBVVHHUIUOOKKJJHH";
		int count = getSubCount(str2,"JJ");
		sop(count);
//		4、
		String MaxStr = getMaxSubString("1254568956","4525");
		sop(MaxStr);
	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
	
// 	需求:模擬一個trim方法,去除字符串兩端的空格。
//	 思路:1、判斷字符串第一個位置是否是空格,直到不是空格爲止
//         2、當開始和結尾都不是空格時,獲取該子串
	public static String myTrim(String str){
		int start = 0,end = str.length()-1;
		while(start<=end && str.charAt(start)==' ')
			start++;
		while(end>=start && str.charAt(end)==' ')
			end--;
		return str.substring(start,end+1);
	}
	
//	練習2:將一個字符串進行反轉
//	 思路:1將字符串轉成字符數組,反轉字符數組
//	 		2將反轉後的字符數組變成字符串。
	public static String reverseString(String str){
		char[] arr = str.toCharArray();
		reverse(arr);
		return new String(arr);
	}
	private static void reverse(char[] arr){
		for(int start=0,end=arr.length-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;
	}
	
//	練習3:獲取一個字符串在另一個字符串中出現的次數
//	   思路:1、定義一個計數器。2,獲取位置,計數器自增
	public static int getSubCount(String str,String key){
		int count = 0;
		int index = 0;
		while((index = str.indexOf(key,index))!=-1){
			index = index +key.length();
			count++;
		}
		return count;
	}
	
//	練習4、獲取兩個字符串中最大相同子串。
//	  思路:1、將短的那個子串按照長度遞減的方法獲取
//	 	 2、將每次獲取到的子串,判斷長串是否包含,如果包含,找到!
	public static String getMaxSubString(String str1,String str2){
		
		String max ="",min ="";
		max = (str1.length()>str2.length())?str1:str2;//長串
		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++){
//				y:字符串的頭,z:字符串的尾;包含頭,不包含尾
				String temp = min.substring(y,z);
				if(max.contains(temp))
					return temp;
			}
		}
		return "";
	}
}

    1.2、StringBuffer類與StringBuilder類

    StringBuffer是字符串緩衝區,是一個容器;長度可變並且可以操作多種數據類型。最後通過toString()方法變成字符串。下面介紹StringBuffer類的基本方法:

    1、存儲:

        StringBuffer  append(data):將數據插入結尾處;

        StringBuffer  insert(int index,data):插入數據到指定位置。

    2、刪除:

        StringBuffer  delete(int start,int end):刪除緩衝區中的指定數據;

        Stringbuffer   deleteCharAt(int index):刪除指定位置的字符。

    3、修改:StringBuffer replace(int start,int end,String str):替代

    4、反轉:StringBuffer reverse()。

    StringBuilder是JDK1.5以後纔出現的,用法基本與StringBuffer相同,但它不不同步,StingBuffer同步。

    版本升級三個因素:提高效率;簡化書寫;提高安全性。

簡單代碼演示:

package itheima.day13;

public class StringBufferDemo {

	public static void main(String[] args) {
		method_add();
		method_del();
	}
	public static void method_add(){
//		容器
		StringBuffer sb = new StringBuffer();
//		追加
		sb.append(true).append("sdggh").append(563.0);
		System.out.println(sb);
	}
	public static void method_del(){
		StringBuffer sb = new StringBuffer("abxcd");
		sb.delete(1, 3);
//		sb.delete(0, sb.length());
		System.out.println(sb.toString());
	}
}

二、包裝類

    根據面向對象的思想,數據類型該怎麼操作,只有數據本身最清楚。爲了操作的方便,因此把基本數據類型封裝成了包裝類,並向外提供了很多操作基本數據的方法。

    基本數據包裝類有八個:Byte、Short、Integer、Long、Boolean、Float、Double和Character,分別對應具體的八個基本數據類型。

    包裝類最常見作用:用於基本數據類型和字符串類型之間的轉換

    基本數據類型轉成字符串:基本數據類型+“”;基本數據類型包裝類.toString(基本數據類型),例如:Integer.toString(34)。

    字符串轉成基本數據類型:xxx a = Xxx.parseXxx(string)。

    十進制轉成其他進制:Integer.toXxxString(int)。

    其他進制轉換成十進制:Integer.parseInt(String s,int radix)//radix表示進制數

    自動裝箱與自動拆箱:這是JDK5.0之後出現的新特性,例如:Integer x = new  Integer(4);可以直接寫成Integer  x = 4;//自動裝箱;x  = x + 5;//自動拆箱。通過intValue()方法。

簡單代碼演示:

package itheima.day13;

//基本數據類型包裝類最常用的操作:
//用於基本數據類型與字符串之間的轉換
public class IntegerDemo {

	public static void main(String[] args) {
		
//		整數類型的最大值、最小值
		sop("int max = "+Integer.MAX_VALUE);
		sop("int min = "+Integer.MIN_VALUE);
		
//		自動裝箱//new Integer(4)
		Integer x = 4;
//		自動拆箱//x.intValue()
		x =x+2;
	}
	
	private  static void sop(Object obj){
		System.out.println(obj);
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章