java lang包不需要導(dǎo)包
1奇钞、字符串字面值可以被看成字符串對(duì)象
2、字符串是常量漂坏,一旦被賦值景埃,就不能改變
toString()方法返回對(duì)象本身媒至,當(dāng)改變值是實(shí)際是改變了地址值
String類的構(gòu)造方法
public String()默認(rèn)空行構(gòu)造方法
public String(byte[] bytes) 對(duì)byte數(shù)組進(jìn)行解碼操作
public String(byte[] bytes,int index ,int length)把字節(jié)數(shù)組一部分轉(zhuǎn)換成字符串
public String(char[] value)把字符數(shù)組轉(zhuǎn)換成字符串
public String(char[] value谷徙,int index ,int length)把字符數(shù)組的一部分轉(zhuǎn)換成字符串
public String (String original) 把字符串常量值轉(zhuǎn)成字符串
String類的判斷功能
s1.equals(s2)? 字符串等價(jià)拒啰,不忽略大小寫
s1.equalsIgnoreCase(String str)比較字符串的內(nèi)容想否相同 ,忽略大小寫
s1.contains(str) 判斷大字符串是都包含子字符串
s1.startsWith(String str) 判斷字符串是否以指定字符串開頭
s1.endsWith(String str) 判斷字符串是否以指定字符串結(jié)尾
s1.isEmpty()判斷字符串是否為空
“”和null的區(qū)別
“”是字符串常量完慧,同時(shí)也是一個(gè)String類對(duì)象图呢,是對(duì)象就可以調(diào)用其方法
null 是空常量,不能調(diào)用任何方法骗随,否則會(huì)出現(xiàn)空指針異常蛤织,null常量可以給任意的引用數(shù)據(jù)類型賦值
String類的獲取動(dòng)能
str.length 返回長(zhǎng)度
string charAt(int index) 獲取指定索引位置的字符,超出位置 StringIndexOutOfBoundsException
indexOf(int ch)獲取指定字符在此字符中出現(xiàn)的第一處索引位置
indexOf(String str)獲取指定字符串在此字符中出現(xiàn)的第一處索引位置
indexOf(int ch鸿染,int index)從指定位置開始指蚜,獲取指定字符在此字符中出現(xiàn)的第一處索引位置
indexOf(String str,int index)從指定位置開始涨椒,獲取指定字符在此字符中出現(xiàn)的第一處索引位置
lastIndexOf
subString(int start) 從指定位置開始截取字符串摊鸡,默認(rèn)到末尾
subString(int start,int end) 從指定位置開始截取字符串蚕冬,并到指定位置結(jié)束
字符串的遍歷:
for(int i = 0 ; i<str.length(); i++){
char c = str.charAt(i);
}
String類的轉(zhuǎn)換功能
byte[] getBytes() 把字符串轉(zhuǎn)換為字節(jié)數(shù)組 GBk碼 一個(gè)中文代表兩個(gè)字節(jié)免猾,GBk碼表,中文的第一個(gè)字節(jié)肯定是負(fù)數(shù)
char[] toCharArray()把字符串轉(zhuǎn)換為字節(jié)數(shù)組
static String valueOf(char[] chs) 把字符轉(zhuǎn)換成字符串
static String valueOf(int i) 把字符轉(zhuǎn)換成字符串囤热,把int類型的數(shù)據(jù)轉(zhuǎn)換為字符串猎提,可以把任意類型的數(shù)據(jù)轉(zhuǎn)換為字符串
抽取方法快捷鍵 alt+shift+M
str.toLowerCase() 是對(duì)原來的字符串進(jìn)行改造并賦值給新的字符串,注意一定是返回值才是修改后的
str.toUpperCase()
str.concat(str2) 拼接字符串
String類的其他功能
字符串代替
str.replace(char old ,char new )
str.replace(string old,string new)
CharSequence 字符串的父類
字符串去除空格的方法//去除的時(shí)開頭和末尾的演示
str.trim();
字符串按照字典順序比較兩個(gè)字符串:
int i = str.compareTo(String str)? 正數(shù)(前比后大)旁蔼、負(fù)數(shù)和零锨苏,從第一個(gè)字母開始比較,相同繼續(xù)棺聊,不同則返回伞租,完全一樣的按照長(zhǎng)度比較
int i = str.compareToIgnoreCase(String str)
注意char的轉(zhuǎn)換都是Unicode值(AscII隸屬于Unicode表)
字符串的翻轉(zhuǎn)
1、將字符串轉(zhuǎn)換成字符數(shù)組
2限佩、將遍歷字符數(shù)組葵诈,并在此拼接成字符串
案例 統(tǒng)計(jì)大串中小串出現(xiàn)的次數(shù)
1、定義計(jì)數(shù)器祟同,變量為0
2作喘、利用IndexOf()方法來判斷大串中的小串,如果沒有返回-1耐亏;如果有返回索引值
3徊都、根據(jù)獲取索引值沪斟,截取字符串
StringBuffer類
1广辰、屬于Java.lang
2暇矫、線程安全的可變字符串序列(線程安全效率低,線程不安全效率較高)
StringBuffer和String的區(qū)別
String是一個(gè)不可變的字符序列择吊,而StringBuffer是一個(gè)可變的字符序列李根,執(zhí)行同步
StringBuilder是不同步的,線程不安全几睛,但是速度快
StringBuffer的構(gòu)造方法
public StringBuffer();初始容量為16 若沒超出房轿,不會(huì)分出新的緩沖區(qū)數(shù)組
public StringBuffer(CharSequence seq);父類引用放子類對(duì)象
public StringBuffer(int capacity);
public StringBuffer(String str);
初始容量
stringBuffer.capacity(),理論值
長(zhǎng)度length()不是初始容量方法所森,實(shí)際值
如果構(gòu)造方法放入字符串囱持,StringBuffer的容量是capacity+length
------------------------------------------------------------------
StringBuffer的添加功能
StringBuffer sb = new StringBuffer();
sb= sb.append(String str...)
注意引用指向了同一個(gè)對(duì)象,所以每一個(gè)引用的值都是相同的焕济,不斷在向字符緩沖區(qū)增加內(nèi)容
指定位置添加sb.insert(int index(具體位置),"heima");但是要注意索引越界異常的問題纷妆,三索引指代是數(shù)組內(nèi)的第四個(gè)位置
StringBuffer的刪除功能
StringBuffer sb = new StringBuffer();
sb.delete(int index(具體的位置)); 注意索引越界異常
sb.delete(int start,int end);刪除結(jié)果包含頭但不包含尾
清空緩沖區(qū)sb.delete(0,sb.length());
StringBuffer的替換和反轉(zhuǎn)功能
StringBuffer sb = new StringBuffer("xxxxxxxxxx");]
sb.replace(int start,int end,str);包頭不包尾
sb.reverse()字符串反轉(zhuǎn)
-----------------------------------------------------------------------
StringBuffer的注意事項(xiàng)
String str = sb.subString(int start) 指定位置到末尾,注意是String接收
subString(int start,int end)包頭不包尾,只改變字符串晴弃,StringBuffer不改變
StringBuffer和String互相轉(zhuǎn)換
String--->StringBuffer
Stringbuffer sb = newStringBuffer(String str);
通過構(gòu)造方法將字符串轉(zhuǎn)換為StringBuffer
或者使用append方法將字符串轉(zhuǎn)換為StringBuffer
StringBuffer--->String
String s1 = new String(StringBuffer);
s1 =sb.toString();
s1 = sb.subString(0,sb.length());
-----------------------------------------------------------------------------
StringBuffer和StringBudder的區(qū)別:方法是一模一樣的
StringBuffer 是JDk1.0 線程安全效率低
StringBulider 是JDK1.5 線程不安全效率高
兩者作為參數(shù)傳遞時(shí)掩幢,
基本數(shù)據(jù)類型的值傳遞,不改變值
引用數(shù)據(jù)類型的值傳遞上鞠,改變其值
-----------------------------------------------------------------------------
冒泡法:(一定是向后排序)
如果前面元素比后面大际邻,交換位置
for(int i = 0;i < arr.length;i++)
? for(int j = 0; j< arr.length-i-1;j++)
if(arr[j]>a[j+1]){
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1] = temp
}
-----------------------------------------------------------------------------選擇排序(第一個(gè)位置依次與其他位置比較)
for(int i =0;i<arr.length;i++){
? for(int j=i+1;j<arr.length;j++){
if(arr[i]<a[j]){
int temp = arr[j];
arr[j]=arr[i];
arr[i] = temp
}
}
-----------------------------------------------------------------------------二分查找(前提是數(shù)組排列有序) 不應(yīng)該有重復(fù)元素,否則是找不到的
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2
while(arr[mid] != num){
? if(arr[mid]>num){
? ? max = mid -1;
? }else {
? ? min = mid +1;
? }
? ? mid = (min+max)/2;
? if(min>max){
? ? break;
? }
}
-----------------------------------------------------------------------------Array類
Arrays.toString(int[] a)
Arrays.sort(int[] a);
Attray.binarySearch(int[] a ,int key);如果沒有找到 則放在負(fù)的插入點(diǎn)-1
-----------------------------------------------------------------------------
基本數(shù)據(jù)類型包裝類 在對(duì)象中定義更多的方法操作該數(shù)據(jù)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
bool Boolean
構(gòu)造方法 public Integer(int value)
public Integer(String s(必須是整形數(shù)字字符串 不然會(huì)報(bào)錯(cuò)) )
可以將整數(shù)轉(zhuǎn)換成對(duì)應(yīng)進(jìn)制的數(shù)字Binary Hex Octal
靜態(tài)常量最大值max_value 2^31-1和最小值min_value -2^31
int 和String的轉(zhuǎn)換
int - String
1芍阎、利用""拼接
2世曾、public staic String valueOf(int i);
3、int - Integer - String
? Interger類的toString()方法
4谴咸、public static String toString(int i);
String ---int
? ? int i = new Integer(String str).intValue();
? ? public static int parseInt(String s);
注意 只有Char類型沒有parseInt()的方法度硝,也就是Character中并沒有該種方法
? ? 字符串到字符轉(zhuǎn)換用toCharArray()就可以
JDK5的拆箱、裝箱操作
自動(dòng)拆箱 把包裝數(shù)據(jù)類型轉(zhuǎn)換成基本數(shù)據(jù)類型
? ? ? //? int i = new Integer().intValue(i1);
int i = Integer i1;
自動(dòng)裝箱 把基本數(shù)據(jù)類型轉(zhuǎn)換成包裝數(shù)據(jù)類型
? ? ? //? Interger i = 100寿冕;
? Integer i = new Integer(100);
注意在裝箱過程中蕊程,如果數(shù)字在-128-127 代表byte取值范圍,在其中的不會(huì)出現(xiàn)問題驼唱,只會(huì)去常量數(shù)組中獲取值藻茂,而非創(chuàng)建對(duì)象地址,該常量數(shù)組中共存有255個(gè)值