String類

public final class String extends Object數組

一、用final修飾的最終類,是表明字符串的類;安全

二、字符串在底層是以字符數組的形式存儲;app

三、任何的字符串都是String的對象ui

四、字符串常量能夠共享(下圖)編碼

String s1 = 「ab」;spa

String s2 = new String(「ab」); 線程

s1和s2指向的是同一塊內存空間,區別在於s1先指向運行時常量池,運行時常量池再指向堆內存,而s2是先在堆內存中開闢一塊空間,用來存儲運行時常量池中value的地址,而後根據value所在空間的地址去堆內存中找對應的字符數組,若沒有,則在常量池中新開闢一塊空間,並在堆內存中建立對應的字符數組,如有,直接調用便可。code

String s3 = 「a」+「b」;對象

字符串在使用+拼接的時候底層其實是調用了StringBuilder中的append的方法blog

String s4 = 「a」; 產生1個對象

s4 = s4+」b」 產生4個對象(new StringBuilder,」b」,」ab」,toString方法會返回一個new String對象)

字符串拼接方式:

一、+

二、直接使用StringBuilder的append方法

三、concat()

StringBuilder和StringBuffer的方法簽名如出一轍,用法一致,區別在於前者是線程不安全的,後者是線程安全的 

表示沒有輸入任何字符: str.equals(」」)

經常使用方法:

建立字符串對象:String str = 「」;

調用方法:

str.length()   獲取字符串長度

str.charAt()   獲取指定下標位置字符

str.toCharArray()   將字符串轉化爲字符數組

字符數組轉化爲字符串

char[] c = {‘ ’,’ ’,’ ’,};

String str = new String(c);或者String str = new String(c,起始位置,個數); 指定要轉換的字符個數

str1.compareTo(str2)   按字典順序比較兩個字符串(相減不爲零才返回該差的值,不然會一致遍歷,若長度不等,較短與較長對應值都相等,則返回長度之差)

str1.compareToIgnoreCase(str2)   忽略字母大小寫進行比較

str.toUpperCase()   轉化爲大寫

str.toLowerCase()   轉化爲小寫

注意:字符串提供了一系列的操做而不改變原字符串的方法,操做的結果是產生一個新的字符串,原字符串並無發生任何改變

str1.equals(str2)   判斷字符串是否相等

str1.equalsIgnoreCase(str2)   忽略大小寫

instanceof   判斷對象和類的關係

對象 instanceof 類/接口   表示判斷對象是不是指定類/接口及其父類/父接口的對象

若是對象的實際類型繼承或者實現類/接口,則該對象也是繼承或者實現的類/接口的對象

str1.concat(str2)   將新字符串拼接在原字數串尾端(底層實際是數組的複製合併過程)

str.contains(「」)   判斷是否包含,只能判斷具體子串

str.endsWith(「」)   後綴(判斷是否以」」中的字符結束)

str.startsWith(「」)   前綴

str.getBytes(「utf-8」)   字符串轉字節(括號中能夠指定編碼,默認是GBK)

str.hashcode()   字符串的哈希碼惟一

str.indexOf(‘’)   獲取字符/字符串在給定的字符串中第一次出現時的下標,也能夠指定從某個下標開始找str.indexOf(「」,count),表示從下標爲count的位置開始日後找,若沒有該字符/字符串,則返回-1

str.lastIndexOf()   獲取字符/字符串在給定的字符串中最後一次出現時的下標,也能夠指定從某個下標開始找str.lastIndexOf(「」,count),表示從下標爲count的位置開始往前找,若沒有該字符/字符串,則返回-1

str.intern()   強制返回指向給定的字符串的常量池地址

str.isEmpty()   判斷字符串的長度是否爲0,注意區別於null,長度:0 != null

str.replace(‘’,’’)   用指定字符替換原字符

str.substring(起始,結束)   截取指定字符串,通常表示範圍的時候,習慣上包頭不包尾/含小不含大

str.trim()   去掉字符串先後的空白

String str = String.valueOf()   將其它類型(包括基本類型和引用類型)的數據轉化爲字符串

注意:打印一個對象(引用類型)時,底層先調用String.valueOf()方法,當對一個對象進行valueOf操做的時候,底層其實是調用了Object對象的tostring方法,所以輸出結果是該對象的地址

特殊的:打印字符數組時,底層也是先調用valueOf()方法,但該方法返回值是new String(),所以輸出的結果是對應字符數組的字符串

 

獲取字符串中的字符

將字符串用split方法按指定的正則規則切分紅字符串數組,遍歷該字符串數組,獲得單個字符

String s1 = "a,1,2,b,4,d";

String[] s2 = s1.split(",");

for(String c:s2){

    System.out.println(c);

}

字符串和其它類型數據的互相轉化

·基本數據類型—>字符串

一、String s = String.valueOf(八種基本類型)

二、String s = 「」+八種基本類型數據

三、StringBuilder s = new StringBuilder().append(八種基本類型數據);

·字符串—>基本數據類型

int i = Integer.parseInt();      //這種方法除了字符不適用外,其它七種基本類型都適用,只須要將數據類型換爲對應的便可

char c = s.charAt(0);      //字符串轉字符(字符串只能有一個字符),其中s是String對象

·數型數組—>字符串(數型數組包括整數和小數)

int[] in = {1,2,3,4,5};
String st = "";
for (int i = 0; i < in.length; i++) {
    String s = String.valueOf(in[i]);
    st += new String(new StringBuilder().append(s));
}
System.out.println(st);

·字符串—>數型數組

String s = "123456";
char[] cs = s.toCharArray();
for (char c : cs) {
    int i = c-'0';
    System.out.println(i);
}

·字符數組—>字符串

char[] cs = {'a','b','c','d','e'};

String s = ""; s+=new String(new StringBuilder().append(cs)); System.out.print(s);

·字符串—>字符數組

String s = "abcde";

char[] cs = s.toCharArray(); for(char c:cs) System.out.println(c);
相關文章
相關標籤/搜索