---------- android培訓、java培訓、期待與您交流! ----------
類String------------------------------------------------
一、概述
?。ㄒ唬┒x:String是字符串的類類型,用于描述字符串事物。
(二)特點:字符串對象一旦被初始化,就不會被改變。String類不能有子類。
?。ㄈ懛?/p>
1、Sting s= new String(“abc”) ;
2、String s = “abc”;
(四)細節
String s = "abc";//創建一個字符串對象在常量池中。
String s1 = new String("abc");//創建兩個對象一個new一個字符串對象在堆內存中。
System.out.PRintln(s==s1);//false
System.out.println(s.equals(s1));
//string類中的equals復寫Object中的equals建立了string類自己的判斷字符串對象是否相同的依據。
//其實就是比較字符串內容。
二、字符串常用方法
?。ㄒ唬┇@取
* int length() :獲取字符串的長度。
* char charAt(int index):返回指定索引index處的 char 值
* int indexOf(int ch)://返回的是ch在字符串中第一次出現的位置
* int indexOf(int ch,int fromIndex):從fromIndex指定位置開始,獲取ch在字符串中第一次出現的位置。
* int indexOf(String str)://返回指定字符串str在此字符串中第一次出現的位置。
* int indexOf(String str,int fromIndex):從fromIndex指定位置開始,獲取指定字符串str在字符串中出現的位置。
* int lastIndexOf(int ch)://返回指定字符在此字符串中最后一次出現處的索引,即反向索引
?。ǘ┡袛?/strong>
* Boolean contains(str):判斷字符串中是否包含str子串。
特殊之處:indexOf(str)可以索引str第一次出現的位置,如果返回-1表示該str不在字符串中存在。所以,也可以用于對指定判斷是否包含。
例如:if(str.indexOf(“aa”)!=-1)而且該方法既可以判斷,又可以獲取出現的位置。如果只為判斷,用contains。
* boolean isEmpty():判斷字符串是否為空(JDK1.6開始支持)。
* boolean startsWith(String prefix):字符串是否是以指定內容開頭。
* boolean endsWith(String suffix):字符串是否是以指定內容結尾。
* boolean equals(str):判斷字符串的內容是否相同,它覆寫了Object類的方法。
* boolean equalsIgnoreCase():忽略大小寫的比較。
(三)轉換
* char[] toCharArray():將字符串轉成字符數組。
* 將字符數組轉成字符串:
-構造函數:String (char[]);
String(char[],offset,count);//將字符數組中的一部分轉成字符串。
-靜態方法:
static String copyValueOf(char[]);
staticString copyValueOf(char[] data,int offset ,int count );
static String valueOf(char[]);
* 將字節數組轉成字符串:
String (byte[]);
String(byte[], offset,count);//將字節數組中的一部分轉成字符串。count表示個數。
* byte[] getBytes():將字符串轉成字節數組。
* 將“基本數據類型”——“字符串”:
static String valueOf(int);
static String valueOf(double);
特殊:字符串和字節數組在轉換過程中,是可以指定編碼表的。
* String concat(String str):將字符串進行連接。
?。ㄋ模┨鎿Q
* String replace(oldchar, newchar):生成一個新的字符串,如果要替換的字符不存在,返回原字符串。
* String replace(CharSequence target, CharSequence replcement):例如str.replace(“abc”, “QQq”);
?。ㄎ澹┣懈?/strong>
* String[] split(regex):按照正則表達式regex的要求對字符串進行切割,返回字符串數組。
?。┳哟ǐ@取字符串中的一部分)
* String subString(int beginIndex):從beginIndex角標開始截取到字符串最后,獲取截取的子串。
* String substring(int beginIndex, int endIndex):從beginIndex角標字符串到endIndex-1角標的字符串。
?。ㄆ撸┺D換,去除空格,比較
* 將字符串轉成大寫或小寫:StringtoUpperCase()、String toLowerCase()
* 將字符串兩端的多個空格去除:String trim()
* 對兩個字符串進行自然順序的比較:int compareTo(String str);
類 StringBuffer------------------------------------------------
一、概述
StringBuffer是一個類似于 String 的字符串緩沖區,可以看做一個容器。StringBuffer可以對字符串內容進行增、刪、改、查等操作。
二、特點
1、長度是可變化的。(數組是固定的)
2、可以直接操作多種數據類型。(數組只能操作一個)
3、最終會通過toString()方法變成字符串。
三、創建對象
StringBuffer sb = new StringBuffer();//初始容量為16個字符。
四、常見操作
(一)存儲
StringBuffer append():將指定數據作為參數添加到已有數據的結尾處。
StringBuffer insert(int offset ,數據):可以將數據插入到指定offset位置。
?。ǘ﹦h除
StringBuffere delete(start,end):刪除緩沖區中的數據,包含start,不包含end。
StringBuffer deleteCharAt(index):刪除指定位置的字符。
清空緩沖區:對象.delete(0,對象.length());
(三)獲取
char charAt(int index);
int indexOf(String str);
int lastIndexOf(String str);
int length();
String substring(int start, int end);
(四)修改
StringBuffer replace(int start, int end, String str);
void setCharAt(int index, char ch);
?。ㄎ澹┓崔D
StringBuffer reverse();
(六)將緩沖區中指定數據存儲到指定字符數組中
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
五、JDK1.5新特點
1、在JDK1.5版本之后,為了提高緩沖區效率,出現了StringBuilder。其中,StringBuffer是線程同步的、用于多線程。StringBuilder是線程不同步的,應用于單線程,它的出現提高效率。
2、Java升級的理由:(1)提高效率。(2)簡化書寫。(3)提高安全性。
基本數據類型包裝類 -------------------------------------
將基本數據類型封裝成對象的好處,在于可以在對象中定義更多的功能方法操作該數據?;緮祿愋蛯ο蟀b類的最常見作用,就是用于基本數據類型和字符串類型之間做轉換。
一、基本數據類型——包裝類
基本數據類型 | 對應包裝類 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
boolean | Boolean |
float | Float |
double | Double |
char | Character |
二、“基本數據類型”——“字符串”
1、基本數據類型+" ";
2、基本數據類型.toString(基本數據類型值)。如:Integer.toString(25);//將25整數變成"25"。
三、“字符串”——“基本數據類型”
1、規律格式:基本數據類型包裝類.parse基本類型(string);
2、代碼格式:xxx a = Xxx.parseXxx(string);//必須傳入對應類型的字符串。
3、示例:
int a = Integer.parseInt("123");//靜態轉換方法
Integer i = new Integer("123");
int num = i.intValue();//跟上面的靜態方式的結果一樣,但這種屬于對象調用方式。
Boolean b = Boolean.parseBoolean("true");
注意:在使用時,Integer x = null;上面的代碼就會出現NullPointerException,要判斷。
四、“十進制”——“其他進制”
toBinaryString();
toHexString();
toOctalString();
五、其他進制轉成十進制
parseInt(String , radix);
如:int a= Integer.parseInt("110", 2);
六、JDK1.5版本以后的新特性
Integer x=4;自動裝箱。等效于Integer x=new Integer(4);
x = x+2;//進行自動拆箱。變成了int類型。和2進行相加。x的拆箱等價于x.intValue()。
七、補充
1、若:Integer m = 128;Integer n = 128;則:x==y,結果是false。
2、若:Integer a = 127;Integer b = 127;則:a==b,結果是true。因為a和b指向了同一個Integer對象。當數值在byte范圍內,對于新特性,如果該值已存在,則不會再開辟新的空間。
八、練習
/* 對一個字符串中的數值進行從小到大的排序。"20 78 9 -7 88 36 29"
思路:
1.排序,熟悉
2.將字符串轉為子串,獲取字符串中需要排序的數值。發現原字符串是用空格分隔的,因此可以用字符串對象的切割方法將大字符串轉化為小串。
3,如何將獲取的數值字符串,轉換為int類型。字符串-->基本數據類型,可以使用包裝類。 */
1 import java.util.Arrays; 2 class wrapperClassDemo{ 3 private static final String SPACE_SEPARATOR = " "; 4 public static void main(String[] args) { 5 String numStr = "20 78 9 -7 88 36 29"; 6 System.out.println(numStr); 7 numStr = sortStringNumber(numStr); 8 System.out.println(numStr); 9 }10 // 字符串排序函數11 public static String sortStringNumber(String numStr){12 //將數字字符串轉化為字符數組13 String[] str_arr = stringToArray(numStr);14 15 //將字符數組轉化為int數組16 int[] num_arr = toIntArray(str_arr);17 18 //將int數組進行從小到大的排序19 mySortArray(num_arr);20 21 //將int數組轉化為字符串22 String temp = numToString(num_arr);23 24 return temp;25 }26 // 定義字符串轉變成字符串數組函數27 public static String[] stringToArray(String numStr){28 String[] str_arr = numStr.split(SPACE_SEPARATOR);29 return str_arr;30 }31 // 定義字符串數組轉換為int[]數組32 public static int[] toIntArray(String[] str_arr){33 int[] int_arr =new int[str_arr.length];34 for (int i = 0;i<str_arr.length ;i++ ){35 int_arr[i] = Integer.parseInt(str_arr[i]);36 }37 return int_arr;38 }39 // 對int[]進行排序40 public static void mySortArray(int[] num_arr){41 Arrays.sort(num_arr);42 }43 // 定義int[]數組轉為String函數44 public static String numToString(int[] num_arr){45 // StringBuffer sb = new StringBuffer();//多線程,用StringBuffer46 StringBuilder sb = new StringBuilder();//單線程,用StringBuilder47 for (int x= 0;x<num_arr.length ;x++ ){48 if (x!=num_arr.length-1)49 sb.append(num_arr[x]+SPACE_SEPARATOR);50 else51 sb.append(num_arr[x]);52 }53 return sb.toString();54 }55 }
---------- android培訓、java培訓、期待與您交流! ----------
新聞熱點
疑難解答