黑馬程式設計師----Java基礎之String類
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a>、期待與您交流! ---------
String類:
字串是一個特殊的物件.
String s1 = "abc";//s1是一個類型別變數,"abc是一個物件"
String s2 = new String("abc");
System.out.println(s1.equals(s2));//String類複寫了Object類中的equals方法.該方法用於判斷字串是否相同.
//執行結果為false
s1和s2有什麼區別?
s1在記憶體中有一個物件
s2在記憶體中有兩個物件
字串最大的特點就是:它一旦初始化就不可以被改變.
String類適用於描述字串事物.那麼他就提供了多個方法對字串進行操作
常見的操作有哪些呢?
1.獲取
1.1 字串中包含的字元數,也就是字串的長度.
int length();獲取長度
1.2 根據位置,獲取位置上的某個字元
char charAt(int index);
1.3 根據字元獲取該字元在字串中的位置
int indexOf(int ch);返回的是ch在字串中第一次出現的位置
int indexOf(int ch, int formIndex):從formIndex指定位置開始,獲取ch在字串中第一次出現的位置
int indexOf(String str);返回的是str在字串中第一次出現的位置
int indexOf(String str, int formIndex):從formIndex指定位置開始,獲取str在字串中第一次出現的位置
int lastIndexOf(int ch);從最後一位往前開始查詢,獲取ch在字串中出現的位置
2判斷
2.1.字串中是否包含某一個子串
boolean contains(str);
特殊之處:indexOf(str):可以索引str第一次出現的位置.如果返回-1.表示str不在字串中存在
if(str.indexOf("aa")!=-1),而且該方法既可以判斷,又可以獲取出現的位置
2.2.字串中是否有內容
boolean isEmpty():原理就是判斷長度是否為零
2.3.字串是否以指定內容開頭
boolean startsWith(str);
2.4.字串是否以指定內容結束
boolean endsWith(str);
2.5. 判斷字串內容是否相同.複寫了Object類中的equals方法
boolean equals(str);
2.6判斷內容是否相同,並忽略大小寫
boolean equalsIgnoreCase();
3.轉換
3.1:將字元陣列轉換成字串
建構函式:String(char[])
String(char[] ,offset,count):將字元陣列中的一部分轉成字串
靜態方法:
static String copyValueOf(char[]);
static String copyValueOf(char[], intoffset, int count);
static String valueOf(char[]);
3.2將字串轉成字元陣列
char[] toCharArray()
3.3將位元組陣列轉成字串
String(byte[])
String(byte[] ,offset,count):將位元組陣列中的一部分轉成字串
3.4將字串轉成位元組陣列
byte[] getBytes()
3.5將基本資料型別轉成字串
static String valueOf(int)
static String valueOf(double)
4.替換
String replace(oldchar, newchar);
5.切割
String[] split(regex)
6.子串.獲取字串的一部分
String substring(begin);
String substring(begein, end)包含頭,不包含尾
7.轉換,去除空格,比較
7.1 將字串轉成大寫或小寫
String toUpperCase();
String toLowerCase();
7.2將字串兩端的多個空格去除
String trim()
7.3 對兩個字串進行自然順序的比較
int compare(str);
練習:獲取一個字串在另一個字串中出現的位置
練習:獲取兩個字串中最大的相同子串
StringBuffer
字串的組成原理就是通過該類實現的
StringBuffer可以對字串內容進行增刪
StringBuffer是一個容器,很多方法於String相同
StringBuffer是可變長度的
StringBuffer的特點
長度是可以變化的
可以位元組操作多個數據型別
最終會通過toString方法變成字串
StringBuffer的功能:
1.儲存:
StringBuffer append(資料);將指定資料作為引數新增到已有資料的結尾處
StringBufferinsert(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是執行緒不同步的
以後開發,建議使用StringBuldr
基本資料型別包裝類
jI本資料型別物件包裝類的最常見應用
就是用於基本資料型別和字元型別之間做轉換
基本資料型別轉字串
基本資料型別+"";
基本資料型別.toString(基本資料型別值)
字串轉基本資料型別
基本資料型別.parse基本資料型別(String)
例如:Integer.parseInt("34");
double d = Double.parseDouble("12.34");
十進位制轉成其它進位制
toBinaryString()//二進位制
toOctalString()//八進位制
toHexString()//十六進位制
其它進位制轉成十進位制
parseInt(String, int redix)
例如:
int x = Integer.parseInt("110",2)//輸出結果為6;
int x = Integer.parseInt("3c",16)//輸出結果為60;
int x = Integer.parseInt("74",8)//輸出結果為60;
1.5版本新特性
x = x/*x.inValue()*/ + 2;//x+2:x進行自動拆箱,變成了int型別,和2 進行加法運算,再將和進行裝箱賦值給x
Integer i = 128;
Integer j = 128;
System.out.println(i==j)//結果為false
Integer a = 127;
Integer b = 127;
System.out.println(a==b)//結果為true
因為a和b指向了同一個Integer物件,因為當該值在byte範圍內容,對於新特性,如果該數值已存在,則不會在開闢性的空間