1、基本java
String類表示的「字符串」。位於java.lang.Object-java.lang.String。數組
java程序中的全部字符串,如 "abc","中國人",都是實現這個類的實例。函數
String沒有子類,不可能被複寫。編碼
字符串是常量,它們的值不能被建立後改變。因爲字符串對象是不可改變的,因此它們能夠被共享spa
2、建立字符串的方式:code
一、直接建立,如String s1="abc";對象
這種定義方式最多見。s1是一個類類型變量,它指向對象,"abc"是一個對象。blog
2用new建立,如String s2=new String("abc");索引
以上兩種建立方式的區別,s1在內存中只建立了一個對象,s2則是兩個對象(分別是new和"abc")內存
建立空字符串的方式:String s1="";或 String s2=new String();
3、字符串之間的比較
==比較的是字符串對象的內存地址值
equals()比較的是字符串的內容。String類複寫了Object類中的equals方法,定義了本身的獨特肉類,該方法用判斷字符串內容是否相同。
package StringDemo1; public class StringDemo { public static void main(String[] args) { String s = new String("abc"); String s1 = "abc"; System.out.println(s1.equals(s));//比較的是字符串的內容 System.out.println(s==s1);//比較的是字符串對象的內存地址值 } }
輸出:
true
false
當字符串abc建立後,就存在了,另外一個變量s3再指向同一字符串後,就再也不新建立了,而是指向了原來的abc,因此內存地址值同樣。
public class StringDemo { public static void main(String[] args) { String s1 = "abc"; String s2 = new String("abc"); String s3 = "abc"; System.out.println(s1 == s2);// 兩個對象,地址值不同 System.out.println(s1 == s3);// s1和s3指向同一個對象 } }
輸出:
false
true
4、String類經常使用方法——獲取數據
一、int length() 獲取字符串長度
二、int indexOf(int ch) 根據字符獲取在字符串中的第一次出現的位置
三、int indexOf(int ch, int fromIndex) 從指定位置起搜索,獲取字符在字符串的中第一次出現的位置
四、int indexOf(String str) 根據子字符串,獲取在字符串中的第一次出現的位置
五、int indexOf(String str, int fromIndex) 從指定位置起搜索,根據子字符串獲取在字符串中的第一次出現的位置
class StringDemoGet { public static void main(String[] args) { method_get(); } public static void method_get() { String str="Hello World"; //獲取字符串長度 int length() sop(str.length()); //輸出:11 //根據位置獲取字符 char charAt(int index) sop(str.charAt(1)); //輸出:e //根據字符獲取在字符串中第一次出現的位置 int indexOf(int ch) sop(str.indexOf('o')); //輸出:4 sop(str.indexOf(100)); //輸出:10。接受ASCII碼錶中字符對應的值 sop(str.indexOf('f')); //輸出:-1。找不到時輸出-1。 //從指定位置起搜索,獲取字符在字符串的中第一次出現的位置 int indexOf(int ch, int fromIndex) sop(str.indexOf('o',5)); //輸出:7 //根據子字符串,獲取在字符串中的第一次出現的位置 int indexOf(String str) sop(str.indexOf("lo")); //輸出:3 //從指定位置起搜索,根據子字符串獲取在字符串中的第一次出現的位置 int indexOf(String str, int fromIndex) sop(str.indexOf("lo",2)); //輸出:3 } public static void sop(Object obj) { System.out.println(obj); } }
5、String類的經常使用方法—判斷數據
一、boolean isEmpty() 判斷字符串是否爲空。就是判斷長度是否爲0,至關於判斷length()==0。長度爲0返回true,不然爲false
二、boolean contains(CharSequence s) 判斷字符串是否包含字符或字符串。
注:indexOf(str),用於索引字符串和一次出現的位置,若是-1,側表示字符串中不存在str,因此也能夠用於判斷字符中是否包含。
if(str.indexof("aa"))!=-1),便可判斷位置,也可判斷是否包含。
三、boolean startsWith(String prefix) 判斷是否以含指定內容開頭
四、boolean endsWith(String suffix) 判斷是否以含指定內容結尾
五、boolean equals(Object anObject) 判斷字符串內容是否相同。複寫了Object類中的equals方法
六、boolea equalsIgnoreCase(String anotherString) 判斷字符串內容是否相同,且忽略大寫小。
public static void method_if() { String str1="ArrayDemo.java"; String str2=""; String str3="ARRAYDEMO.JAVA"; //判斷字符串是否爲空 boolean isEmpty() sop(str1.isEmpty()); //輸出:false sop(str2.isEmpty()); //輸出:true //判斷字符串是否包含 boolean contains(CharSequence s) sop(str1.contains("Demo.")); //輸出:true //判斷是否以含指定內容開頭 boolean startsWith(String prefix) sop(str1.startsWith("Array")); //輸出:true //判斷是否以含指定內容結尾 boolean endsWith(String suffix) sop(str1.endsWith(".java")); //輸出:true //判斷字符串內容是否相同。 boolean equals(Object anObject) sop(str1.equals(str3)); //輸出:false //判斷字符串內容是否相同,且忽略大寫小。 equalsIgnoreCase(String anotherString) sop(str1.equalsIgnoreCase(str3)); //輸出:true } public static void sop(Object obj) { System.out.println(obj); } }
6、String類操做——轉換
一、字符數組——>字符串
構造函數:String(char[])
String(char[],offset,count),字符數組中的一部分轉成字符串
靜態方法:static String copyValueOf(char[]);
static String copyValueOf(char[],offset,count),字符數組中的一部分轉換成字符串
static String valueOf(char[]);
static String valueOf(char[],offset,count),字符數組中的一部分轉換成字符串
二、字符串——>字符數組 char[] toCharArray();
三、字節數組——>字符串
構造函數:String(byte[])
String(byte[],offset,count),字節數組中的一部分轉成字符串
四、字符串——>字節數組(能夠指定編碼表) byte[] getBytes()
五、基本數據類型——>字符串
靜態方法:static String valeOf(int); 3+''//String.valueOf(3)
static String valeOf(double);
五、基本數據類型——>字符串 String valudOf(int)
class StringDemoTrans { public static void main(String[] args) { method_trans(); } public static void method_trans() { char[] arr={'a','b','c','d','e','f','g','h','i'}; //構造函數,字符數組轉成字符串 String(char[]) sop(new String(arr)); //輸出:abcdefghi //構造函數,字符數組中的一部分轉成字符串 String(char[],offset,count), sop(new String(arr,1,5)); //輸出:bcdef //靜態方法,字符數組轉成字符串 static String copyValeOf(char[]); sop(String.copyValueOf(arr)); //輸出:abcdefghi //靜態方法,字符數組中的一部分轉成字符串 static String copyValeOf(char[],offset,count) sop(String.copyValueOf(arr,1,3)); //輸出:bcd //靜態方法,字符數組轉成字符串 static String valeOf(char[]); sop(String.valueOf(arr)); //輸出:abcdefghi //靜態方法,字符數組中的一部分轉成字符串 static String valeOf(char[],offset,count) sop(String.valueOf(arr,2,3)); //輸出:cde } public static void sop(Object obj) { System.out.println(obj); } }
class StringDemoTrans { public static void main(String[] args) { method_trans(); } public static void method_trans() { String s="zxcvbnm"; //字符串——>字符數組 char[] toCharArray(); char[] chs=s.toCharArray(); for (int x=1;x<chs.length ;x++ ) { sop(chs[x]); } } public static void sop(Object obj) { System.out.println(obj); } }
輸出:
x
c
v
b
n
m
class StringDemoTrans { public static void main(String[] args) { method_trans(); } public static void method_trans() { //字節數組——>字符串; byte[] bs={97,98,99,100,101,102}; sop(new String(bs)); //abcdef sop(new String(bs,1,3)); //bcd } public static void sop(Object obj) { System.out.println(obj); } }
class StringDemoTrans { public static void main(String[] args) { method_trans(); } public static void method_trans() { //字符串——>字節數組 byte[] getBytes() String s="qwerty"; byte[] bs=s.getBytes(); for (int x=1;x<bs.length ;x++ ) { sop(bs[x]); } } public static void sop(Object obj) { System.out.println(obj); } }
7、String類的經常使用方法—替換
一、替換單個字符 String replace(char oldChar, char newChar)
二、替換字符串 String replace(CharSequence target, CharSequence replacement)
class StringDemoReplace { public static void main(String[] args) { String s="Hello java"; //替換單個字符 sop(s.replace('H','h')); //輸出:hellow java sop(s.replace('q','h')); //輸出:Hellow java。哪果原字符不存在,返回的仍是原字符串。 //替換字符串 sop(s.replace("Hello java","world")); //輸出:Hellow world } public static void sop(Object obj) { System.out.println(obj); } }
8、String類的經常使用方法—切割
String[] split(String regex)
class StringDemoSplit { public static void main(String[] args) { String s="zhanshan,lisi,wangwu"; String[] arr=s.split(","); for (int x=0;x<arr.length ; x++) { sop(arr[x]); } } public static void sop(Object obj) { System.out.println(obj); } }
輸出:
zhanshan
lisi
wangwu
9、String類的經常使用方法—獲取子串
sbustring(begin) 從指定位置開始開結尾。整串,s.substring(0)。若是角標不存在,則不現字符角標越界異常
sbustring(begin,end) 包含頭,不包含尾。整串,s.substring(0,s.length())
class StringDemoSubstring { public static void main(String[] args) { method_Substring(); } public static void method_Substring() { String str1="ArrayDemo.java"; //子串,sbustring(begin)。 sop(str1.substring(4)); //輸出:yDemo.java //子串,sbustring(begin,end) sop(str1.substring(3,5)); //輸出:ay } public static void sop(Object obj) { System.out.println(obj); } }
9、String類的經常使用方法—大小寫轉換、去掉兩端空格、
轉換成大小寫
String toLowerCase();
String toUpperCase();
class StringDemoCase { public static void main(String[] args) { String s="Hello World"; //轉成小寫 sop(s.toLowerCase()); //輸出:hello world //轉成大寫 sop(s.toUpperCase()); //輸出:HELLO WORLD } public static void sop(Object obj) { System.out.println(obj); } }
去掉兩端多空格
String trim()
class StringDemoTrim { public static void main(String[] args) { String s=" Hello World "; //轉成小寫 sop(s.trim()); //Hello World } public static void sop(Object obj) { System.out.println(obj); } }
class StringDemoCompare { public static void main(String[] args) { String s1="aba"; String s2="aba"; sop(s1.compareTo(s2)); //1。至關於s1和s2的ASCII相減。返回結果大於0,s1>s2;等於0,s1=s2;小於0,s1<s2. } public static void sop(Object obj) { System.out.println(obj); } }
對兩個字符串的天然順序進行比較
int compareTo(string) 返回結果爲整數。多是正數,負數或0。
class StringDemoCompare { public static void main(String[] args) { String s1="abc"; String s2="aba"; sop(s1.compareTo(s2)); //1。c-a=2。至關於s1和s2的最前一個不相同的字符的編碼值相減。返回結果大於0,s1>s2;等於0,s1=s2;小於0,s1<s2. } public static void sop(Object obj) { System.out.println(obj); } }