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