---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------
String類
字符串是一個特殊的對象。
字符串一旦初始化就不可以被改變。
String str = “aaa”;和String str1 = new String(“aaa”);有什麼區別?
這種兩種定義"abc"字符串的方式都可以。 str相對簡單,一般都按照str這樣定義。
1,地址值一樣。
2,創建str並初始化,內存中只有一個對象。就是字符串對象。創建str1並初始化,內存有兩個對象,一個是new,一個是字符串。
== 操作符專門用來比較兩個變量的值是否相等,也就是用於比較變量所對應的內存中所存儲的數值是否相同,要比較兩個基本類型的數據或兩個 引用變量是否相等,只能用==操作符。如果一個變量指向的數據是對象類型的,那麼,這時候涉及了兩塊內存,對象本身佔用一塊內存(堆內 存),變量也佔用一塊內存,例如:Objet obj = new Object();變量obj是一個內存,new Object()是另一個內存,此時,變量obj所對應的內存中存 儲 的值就是對象佔用的那塊內存的首地址。對於指向對象類型的變量,如果要比較兩個變量是否指向同一個對象,即要看這兩個變量所對應的 內存 中的數值是否相等,這時候就需要用==操作符進行比較。
equals方法是用於比較兩個獨立對象的內容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨立的。
String類適用於描述字符串事物。
那麼它就提供了多個方法對字符串進行操作。
常見的操作有哪些?
以字符串String str = "Hello java";爲例。
1.1 字符串中的包含的字符數,也就是字符串的長度。
int length(): //獲取長度。
例如:str.length(); //可以得到長度是10
1.2 根據位置獲取位置上某個字符。
char charAt(int index):
例如:char c =str.charAt(8); //獲取了j。當訪問到字符串中不存在的角標時會發生StringIndexOutOfBoundsException。
1.3 根據字符獲取該字符在字符串中位置。
int indexOf(int ch): //返回的是ch在字符串中第一次出現的位置。
例如:int x = str.indexOf(8); //返回的是a
int indexOf(int ch, int fromIndex) : //從fromIndex指定位置開始,獲取ch在字符串中出現的位置。
例如:int x = str.indexOf("e",3); //返回-1,第三位開始查找沒有存在e
int y = str.indexOf("o",1); //返回4
int indexOf(String str): //返回的是str在字符串中第一次出現的位置。
int indexOf(String str, int fromIndex) : //從fromIndex指定位置開始,獲取str在字符串中出現的位置。
字符串同int類型一樣查找,只不過接受的是String類型的而已。
int lastIndexOf(int ch) ://反向查找字符串出現的問題,但是打印的角標位置還是從左往右算
例如: int x = str.lastIndexOf("v"); //返回8
以String str = "ArrayDemo.java";進行判斷。
2.1 字符串中是否包含某一個子串。
boolean contains(str):
例如:boolean x1 = str.contains("java"); //結果是true
特殊之處:indexOf(str):可以索引str第一次出現位置,如果返回-1.表示該str不在字符串中存在。
所以,也可以用於對指定判斷是否包含。
if(str.indexOf("aa")!=-1)
而且該方法即可以判斷,有可以獲取出現的位置。
2.2 字符中是否有內容。
boolean isEmpty(): 原理就是判斷長度是否爲0.
例如:boolean x2 = str.isEmpty(); //有內容所以true
2.3 字符串是否是以指定內容開頭。
boolean startsWith(str);
例如:boolean x3 = str.startsWith("Array"); //結果是true
2.4 字符串是否是以指定內容結尾。
boolean endsWith(str);
例如:boolean x4 = str.endsWith("java"); //結果是true
2.5 判斷字符串內容是否相同。複寫了Object類中的equals方法。
boolean equals(str);
例如:定義多一個String s = "ArrayDemo.java";
boolean x5 = str.equals(s); //兩個相同所以true
2.6 判斷內容是否相同,並忽略大小寫。
boolean equalsIgnoreCase();
例如:boolean x6 = str.equals("ARRAYDEMO.java"); //相同true
例子: Char[] arr= {'a','b','c','d','e','f','g','h'};
3.1 將字符數組轉成字符串。
構造函數:String(char[])
String(char[],offset,count): //將字符數組中的一部分轉成字符串。
例如:
String s= new String(arr); //取了全部
String s= new String(arr,1,3); //取了bcd
靜態方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data, int offset, int count) ;
static String valueOf(char[]);
3.2 將字符串轉成字符數組。
char[] toCharArray():
例如:String str = "Hello java";
char[] ch = str.toCharArray(); //結果爲:ch = {'H','e','l','l','o',' ','j','a','v','a'};
3.3 將字節數組轉成字符串。
String(byte[])
String(byte[],offset,count): //將字節數組中的一部分轉成字符串。
3.4 將字符串轉成字節數組。
byte[] getBytes():
3.5 將基本數據類型轉成字符串。
static String valueOf(int)
static String valueOf(double) //3+""; //String.valueOf(3);
特殊:字符串和字節數組在轉換過程中,是可以指定編碼表的。
String replace(oldchar,newchar);
例如:String s = "hello java";
String s1 = s.replace('a','n'); //結果所以的a換成了n, hello jnvn
String[] split(regex); //用regex進行給字符串切割,regex是自定義的切割符號
String substring(begin); //從指定位置到最後
String substring(begin,end); //指定個範圍,包含頭不包含尾
7.1 將字符串轉成大寫或則小寫。
String toUpperCase();
String toLowerCase();
7.2 將字符串兩端的多個空格去除。
String trim();
7.3 對兩個字符串進行自然順序的比較。
int compareTo(string);//通常用來排序用
例如:
String s = " Hello Java ";
sop(s.toLowerCase());
sop(s.toUpperCase());
sop(s.trim());
String s1 = "a1c";
String s2 = "aaa";
sop(s1.compareTo(s2));
StringBuffer是字符串緩衝區。是一個容器。
特點:
1、長度是可變化的。
2、可以字節操作多個數據類型。
3、最終會通過toString方法變成字符串。
1、存儲
StringBuffer append(); //將指定數據作爲參數添加到已有數據結尾處。
StringBuffer insert(index,數據); //可以將數據插入到指定index位置。
2、刪除
StringBuffer delete(start,end); //刪除緩衝區中的數據,包含start,不包含end。
StringBuffer deleteCharAt(index); //刪除指定位置的字符。
3、獲取
char charAt(int index);
int indexOf(String str);
int lastIndexOf(String str);
int length();
String substring(int start, int end);
4、修改
StringBuffer replace(start,end,string);
void setCharAt(int index, char ch) ;
5、反轉
StringBuffer reverse();
6、將緩衝區中指定數據存儲到指定字符數組中
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin);
JDK1.5 版本之後出現了StringBuilder.
StringBuffer是線程同步;StringBuilder是線程不同步。以後開發,建議使用StringBuilder。
升級三個因素:
1、提高效率。
2、簡化書寫。
3、提高安全性。
基本數據類型對象包裝類。
byte Byte
short short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
將基本數據類型封裝成對象的好處在於可以在對象中定義更多的功能方法操作該數據。
常用的操作之一:用於基本數據類型與字符串之間的轉換。
基本數據類型轉成字符串。
基本數據類型+"";
基本數據類型.toString(基本數據類型值);
如: Integer.toString(34); //將34整數變成"34";
字符串轉成基本數據類型。
xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt("123");
double b = Double.parseDouble("12.23");
boolean b = Boolean.parseBoolean("true");
Integer i = new Integer("123");
int num = i.intValue();
十進制轉成其他進制。
toBinaryString();
toHexString();
toOctalString();
其他進制轉成十進制。
parseInt(string,radix);
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------