天天看點

String、Integer、StringBuffer和API類中的常用方法

String類:

String是final類型的(最終類),String類不可以有子類

   字元串是一個特殊的對象    字元串一旦被初始化,就不可以改變

String str1="abc";
String str2=new String("abc");
/*
 * str1和str2的差別:
 * str1在在常量池中有一個對象:"abc"
 * str2在記憶體中有堆記憶體有一個對象并引用了常量池中的"abc"位址
 * str1==str2    
 * 結果為:false
 * str1.equals(str2)    結果為:true
 * 因為:String類複寫了Object類中equals方法,該方法用于判斷字元串是否相等
 */
           

String類适用于描述字元串事物,那麼它就提供了多個方法對字元串進行操作。

String類提供的方法: 常用操作方法: 1,擷取 字元串的長度:length() 根據位置擷取某個字元:charAt(int    ) 根據字元串擷取在字元串中的位置:indexOf(String    str) 如果indexOf傳回值為”—1“,則表示該str不在字元串中

從指定位置開始擷取字元在字元串中的位置:indexOf(String    str,int    fromIndex) 根據字元擷取在字元串中的位置:lastIndexOf(String    str) 從指定位置開始擷取字元在字元串中的位置:lastIndexOf(String    str,int    fromIndex) 根據字元擷取在字元串中的位置: indexOf(int    ch) 從指定位置開始擷取字元在字元串中的位置: indexOf(int    ch,int    fromIndex)

2,判斷 字元串中是否包含某一個字元串:    contains

字元串是否為空:isEmpty():原理就是判斷長度是否為”0“

字元串的開始 是否是指定内容:startsWith(”字元串“) 字元串的末尾 是否是指定内容:endsWith(”字元串“)

比較字元串的大小:compareTo(”字元串“),不包含,傳回值為”-1“

判斷字元串内容是否相同:equals(”字元串“),複寫了Object中的equals方法 判斷字元串内容是否相同(忽略大小寫):equalsIsIgnoreCase(”字元串“)

3,轉換

将字元數組轉成字元串:String(char    [  ]) String(char[  ],起始位置,個數):從指定位置轉換指定個數                        另一種方法是:調用Arrays.toString()方法:String str=Arrays.toString(arr); 将字元串轉換成字元數組: char [  ] toCharArray()

将位元組數組轉成字元串:String(byte [  ])

将字元串轉成位元組數組:byte [  ] getBytes()

将基本資料類型轉換成字元串:String valueOf(資料類型) 4、替換

replace(”舊字元串“,”新字元串“)    如果要替換的字元串不存在,則傳回原串

5、切割

split(”規則“)

/*
 * 例如:String str="zhangsan lisi wangwu"
 */
String [] arr=str.split(" ");//按空格切,切的值存入到數組中
for(int i=0;i<arr.length-1;i++)
{
	System.out.println(arr[i]);
}
           

6、從指定位置開始截取一部分字元串:substring(begin,end),如果省略end,則截取到末尾 String str="abcdef" String str1=str.substring(1,2);    (包含 頭,不包含 尾) 7、轉換 轉換為小寫:toLowerCase()

轉換成大寫:toUpperCase() 去除空格: trim():去除字元串兩端空格 對兩個字元串進行自然順序比較 compareTo():如果兩個字元串相等,則傳回”0“ 如果A字元串大于B字元串,則傳回兩數相減的正數 如果A字元串小于B字元串,則傳回兩數相減的負數

以上重要方法練習:

class  StringMethodDemo
{
	public static void method_7()
	{
		String s = "    Hello Java     ";
		sop(s.toLowerCase());<span style="white-space:pre">	</span>//将字元串轉換為小寫字母
		sop(s.toUpperCase());<span style="white-space:pre">	</span>//将字元串轉換為大寫字母
		sop(s.trim());<span style="white-space:pre">		</span>//取出字元串的前後空格
		String s1 = "a1c";
		String s2 = "aaa";
		sop(s1.compareTo(s2));<span style="white-space:pre">	</span>//compareTo比較兩個字元串
	}
	//截取
	public static void method_sub()
	{
		String s = "abcdef";
		sop(s.substring(2));<span style="white-space:pre">	</span>//從指定位置開始到結尾。如果角标不存在,會出現字元串角标越界異常。
		sop(s.substring(2,4));<span style="white-space:pre">	</span>//包含頭,不包含尾 s.substring(0,s.length());
	}
	//切割
	public static void  method_split()
	{
		String s = "zhagnsa,lisi,wangwu";
		String[] arr  = s.split(",");<span style="white-space:pre">	</span>//切割後,傳回的是一個字元串數組
		for(int x = 0; x<arr.length; x++)
		{
			sop(arr[x]);
		}
	}
	//替換
	public static void method_replace()
	{
		String s = "hello java";
		//String s1 = s.replace('q','n');//如果要替換的字元不存在,傳回的還是原串。
		String s1 = s.replace("java","world");
		sop("s="+s);
		sop("s1="+s1);
	}
	//字元數組轉換為字元串,字元串轉換為字元數組
	public static void method_trans()
	{
		char[] arr = {'a','b','c','d','e','f'};
		String s= new String(arr,1,3);
		sop("s="+s);
		String s1 = "zxcvbnm";
		char[] chs = s1.toCharArray();
		for(int x=0; x<chs.length; x++)
		{
			sop("ch="+chs[x]);
		}
	}
	//判斷
	public static void method_is()
	{
		String str = "ArrayDemo.java";		
		//判斷檔案名稱是否是Array單詞開頭。
		sop(str.startsWith("Array"));
		//判斷檔案名稱是否是.java的檔案。
		sop(str.endsWith(".java"));
		//判斷檔案中是否包含Demo
		sop(str.contains(".java"));
	}
	//擷取
	public static void method_get()
	{
		String str = "abcdeakpf";
		//長度
		sop(str.length());
		//根據索引擷取字元。
		sop(str.charAt(4));//當通路到字元串中不存在的角标時會發生StringIndexOutOfBoundsException。
		//根據字元擷取索引
		sop(str.indexOf('m',3));//如果沒有找到,傳回-1.		
		//反向索引一個字元出現位置。
		sop(str.lastIndexOf("a"));		
	}
	public static void main(String[] args) 
	{
		method_7();
		method_trans();
		method_is();
		method_get();
		String s1 = "abc";
		String s2 = new String("abc");
		String s3 = "abc";
		System.out.println(s1==s2);
		System.out.println(s1==s3);
	}
	//輸出方法
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}
           

字元串操作練習: 擷取一個字元串在另一個字元串中出現的次數

/*
 * 字元串操作練習:
 * 擷取一個字元串在另一個字元串中出現的次數。
 * 思路:
 * 1、定義個計數器。
 * 2、擷取kk第一次出現的位置。
 * 3、從第一次出現位置後剩餘的字元串中繼續擷取kk出現的位置,每擷取一次就計數一次。
 * 4、當擷取不到時,計數完成。
 */
class  StringTest
{
	public static int getSubCount(String str,String key)
	{
		int count = 0;<span style="white-space:pre">	</span>//計數器
		int index = 0;<span style="white-space:pre">	</span>//索引位置

		while((index=str.indexOf(key))!=-1)<span style="white-space:pre">	</span>//在字元串中查找另一個字元串的起始位置
		{
			sop("str="+str);
			str = str.substring(index+key.length());<span style="white-space:pre">	</span>//截取字元串并賦予字元串
			count++;	//如果找到,統計出現的次數
		}
		return count;
	}
	public static void main(String[] args) 
	{
		String str = "kkabkkcdkkefkks";
		sop("count="+getSubCount(str,"kk"));
	}

	public static void sop(String str)
	{
		System.out.println(str);
	}
}
           

                                         Integer類 MIN_VALUE:Integer類型的最小值           MAX_VALUE:Integer類型的最大值

       toBinaryString(60):将60轉換為二進制        toOtcalString(60):将60轉換為8進制        toHexString(60):将60轉換為16進制

//int(數值型) --- String(字元串)
int num = 100
//通過+""
String s=num+""
//通過String類中的valueOf()
String s=String.valueOf(num)
//通過Integer類中的toString方法
String s  =Integer.toString(num);
//String(字元串) --- int(數值型)
String s="100"
//Integer的構造方法
Integer i =  new Integer(s)
int num  = i . intValue()
//通過Integher類中的parseInt
int num = Integer . parseInt(s)//靜态方法
           

StringBuffer: 是字元串緩沖區        (面盆理論,不管怎麼向緩沖區中添加,始終還是StringBuffer對象) 是一個容器 StrinbBuffer的特點: 1,長度是可變的(數組不可變) 2,可以直接操作多個資料類型(數組隻能操作一個類型) 3,最終會通過toString方法變成字元串     

StringBuffer sb=new StringBuffer("abc");
sb.append("d");
sb.delete();sb.replace(1,2,"java");
           

String和StringBuffer的差別: String :一旦被指派,就不能被改變 StringBuffer:采用的是緩沖區機制,随着資料的增多,還可以繼續開辟空間,增大 StringBuffer的初始容量為:16個字元

String和StringBuffer可以通過構造函數進行轉換

StringBuffer (String str)StringBuffer構造函數,将字元串轉換為StringBuffer

String(StringBuffer sb)String構造函數,将StringBuffer轉換為String

StringBuffer常用方法 1、存儲 append();将資料添加到已有資料的結尾 insert(位置,資料):将資料插入到指定位置 2、删除 delete(start,end):删除緩沖區中的資料,包含start,不包含end deleteCharAt(index):删除指定位置的字元 3、擷取 charAt(位置):擷取指定位置的字元 indexOf(字元串):擷取字元串所在緩沖區的位置 lastIndexOf(字元串):從右開始,擷取字元串所在緩沖區的位置 length():擷取緩沖區字元串的長度 substring(開始,結束):從緩沖區中擷取指定的開始—結束字元串 4、修改 replace(開始,結束,字元串):指定要修改的起始位置,結束位置和要修改的字元串 setCharAt(位置,字元):替換某一個字元 5、翻轉 reverse() 6、将緩沖區中的指定資料存儲到指定字元數組中 getChars(開始,結束,目的地的開始)                 例:

StringBuffer sb=new StringBuffer("abcd");
char [] arr=new char[ 4 ];
sb.getChars(1,4,arr,1):将緩沖去中的資料存入到字元數組arr中
           

JDK1.5之後,出現了StringBuilder StringBuffer:是線程同步(安全) StringBuilder:是線程不同步(不安全) Java的更新三個因素: 1、提高效率     2、提高安全性     3、簡化書寫

API常用類的方法:    1、Object                     toString():一般都複寫此方法                     equals():預設比較的是位址值,一般都重寫,按照自己的比較方式重寫

   2、Math                    floor():            小于等于參數的最大整數                     ceil():             大于等于參數的最小整數                     round():        四舍五入,原理:+0.5                     random()        産生随機數    【0.0  ~  1.0】                     pow(x,y)      x的y次方                               sqrt()               平方根

   3、Random                     nextInt(int     n):随機産生【0    ~    n】之間的随機數                     4、Scanner                     nextInt:從鍵盤擷取Int類型的資料                     next:從鍵盤擷取一個資料

   5、String                 equals():判斷是否相等                 

   6、StringBuffer:                     append():添加                     insert():插入                     reverse():翻轉

   7、System                     exit(0):退出

   8、Arrays                     sort():排序                     binarySearch():二分查找

   9、Integer                     parseInt():轉換為Int類型                     parseDouble():轉換為Double類型