Java-字串的常用方法總結
阿新 • • 發佈:2021-01-01
String構造方法常用的幾種過載方式
String s = new String();
System.out.println(s);
String s2 = new String("hello");
System.out.println(s2);//hello
char[] chars = {'a', 'd', 'c'};
String s3 = new String(chars);
System.out.println(s3) ;//adc
byte[] bytes = {97, 98, 99, 100, 65};
String s4 = new String(bytes);
System.out.println(s4);//abcdA
字串的幾種常用方法
- 求字串長度
- equals方法比較字串內容是否相等
- 忽略大小寫進行比較(equalsIgnoreCase)
- 字串比較compareTo
- startsWith、endsWith
== 運算子用於比較兩個引用是否指向同一個物件;
equals() 方法則是比較兩個字串中的內容是否相同
String a = "java" ; //A:65 a:97
//s.length()得到字串長度
System.out.println(a.length());//4
String b = "JAva";
//equals方法 比較的是字串內容是否相等
System.out.println(a.equals(b));//false
//忽略大小寫進行比較
System.out.println("忽略大小寫:" + a.equalsIgnoreCase(b));//true
/**
* compareTo()
* 比較對應字元的大小(ASCII碼順序),
* 如果第一個字元和引數的第一個字元不等,結束比較,
* 返回他們之間的差值,如果第一個字元和引數的第一個字元相等,
* 則以第二個字元和引數的第二個字元做比較,
* 以此類推,直至比較的字元或被比較的字元有一方結束。
*/
//如果a>b返回整數,等於返回0,小於返回負數
System.out.println("比較的值是:"+a.compareTo(b));//32
//是否以" "開頭 返回布林值
System.out.println(a.startsWith("j"));//true
//是否以" "結尾 返回布林值
System.out.println(a.endsWith("va"));//true
查詢字元(字串)
- indexOf
- lastIndexOf
String str = "abcabc";
//找不到指定字元(字串),就返回 -1
System.out.println(str.indexOf(99));//2
//返回的是指定字元首次出現的索引值 c:99 所在索引值為2
System.out.println(str.indexOf("c"));//2
//返回的是指定字串首次出現的索引位置
System.out.println(str.indexOf("ab"));//0
//返回的是指定字元最後一次出現的索引位置
System.out.println(str.lastIndexOf("c"));//5
//返回的是指定字串最後一次出現的索引位置
System.out.println(str.lastIndexOf("ab"));//3
- charAt 根據指定的索引得到對應的字元
- substring 擷取字串
String str = "javasmoracle";
//charAt 根據指定的索引得到對應的字元
System.out.println(str.charAt(1));//a
//System.out.println(str.charAt(10)); 超過索引範圍:StringIndexOutOfBoundsException
//substring 擷取字串。從指定索引位置開始往後擷取
String sbuStr1 = str.substring(4);
System.out.println(sbuStr1);//smoracle
//前閉後開 包含頭不包含尾 [4,6)
String subStr2 = str.substring(4, 6);
System.out.println(subStr2);//sm
- 字串拼接
- 替換(replace、replaceAll)
String str = "javasm";
//字串拼接的方法,得到一個新的字串
String strConcat = str.concat("oracle");
System.out.println(strConcat);//javasmoracle
//替換字元,新的字元會把舊的字元全部替換,生成新的字串
String strReplace = str.replace('a', 'b');
System.out.println(strReplace);//jbvbsm
System.out.println(str);//javasm
//用oracle替換sm
String strReplaceAll = str.replaceAll("sm", "oracle");
System.out.println(strReplaceAll);//javaoracle
- 去除頭和尾的空格 trim
- 字元進行切分 split
String str = " javasm ";
System.out.println(str);
//去除頭和尾的空格
String trim = str.trim();
System.out.println(trim);
//切分的方法,以指定的字元進行切分,返回一個字串陣列
String[] vas = str.split("va");
System.out.println(Arrays.toString(vas));//[ ja, sm ]
- 大小寫轉換
//大小寫轉換
String str = "JAva";
System.out.println(str.toUpperCase());//JAVA
System.out.println(str.toLowerCase());//java
- 資料格式轉化
//資料格式轉化
String str = "abcd";
byte[] bytes = str.getBytes();
System.out.println(Arrays.toString(bytes));//[97, 98, 99, 100]
char[] chars = str.toCharArray();
System.out.println(Arrays.toString(chars));//[a, b, c, d]
- == / equals() 比較
//引用型別至少佔兩塊記憶體空間
String s1 = new String("java");
String s2 = new String("java");
String s3 = "javasm";
String s4 = "javasm";
String s5 = "java" + "sm";//加號兩邊是字串常量,會放入常量池
System.out.println(s1.equals(s2));//true
System.out.println(s1 == s2);//false 兩個引用是否指向同一個物件
System.out.println(s3 == s4);//true
System.out.println(s4 == s5);//true
String s6 = "java";
//加號兩邊如果出現變數,新產生的則放到臨時緩衝區,不再放入字串常量池
s6 += "sm";//s6 = s6+"sm";
String s7 = "javasm";
System.out.println(s6 == s7);//false
StringBuffer構造方法常用的幾種過載方式
StringBuffer stringBuffer1 = new StringBuffer();//預設字元陣列長度是16
StringBuffer stringBuffer = new StringBuffer("hello");
StringBuffer stringBuffer2 = new StringBuffer(32);
StringBuffer stringBuffer4 = new StringBuffer(stringBuffer1);
- 字串拼接 append()
- 字元長度 length()
//頻繁的進行字串拼接
StringBuffer stringBuffer = new StringBuffer("hello");
stringBuffer.append("sm");
//直接列印引用型別stringBuffer,預設呼叫toString
System.out.println(stringBuffer);//hellosm
System.out.println(stringBuffer.toString());//hellosm
//返回的是字元長度
System.out.println(stringBuffer.length());//7
- 字元序列倒置 reverse
StringBuffer stringBuffer = new StringBuffer("hello");
stringBuffer.append("sm");
System.out.println(stringBuffer);//hellosm
//將當前StringBuffer物件中的字元序列倒置
System.out.println(stringBuffer.reverse());//msolleh
- 字元替換 replace
StringBuffer stringBuffer = new StringBuffer("hello");
stringBuffer.append("sm");
System.out.println(stringBuffer);//hellosm
//替換 將用替換字串從 start指定的位置開始替換,直到 end 指定的位置結束 [)
System.out.println(stringBuffer.replace(0, 5, "world"));//worldsm
- 字元刪除 delete
StringBuffer stringBuffer = new StringBuffer("hello");
stringBuffer.append("sm");
System.out.println(stringBuffer);//hellosm
//刪除 [)
stringBuffer.delete(0,5);
System.out.println(stringBuffer);//sm
- 字元插入 insert
StringBuffer stringBuffer = new StringBuffer("hello");
stringBuffer.append("sm");
System.out.println(stringBuffer);//hellosm
//指定位置插入 索引不能超過7否則會報錯
stringBuffer.insert(5,"java");
System.out.println(stringBuffer);//hellojavasm
StringBuffer和StringBuilder
//多執行緒情況下
//stringBuffer 執行緒安全,效能低
StringBuffer stringBuffer = new StringBuffer("hello");
stringBuffer.append("sm");
//stringBuilder 執行緒不安全,效能高
StringBuilder stringBuilder = new StringBuilder("hello");
stringBuilder.append("sm");
System.out.println(stringBuilder.length());//7
位移運算子
如:
n << 1 : n * 2^1
n << 3 : n * 2^3
n >> 1 :n / 2^1
// 00000010 << 00000100
System.out.println(2 << 1);//4 2*2^1=4
//00000011 << 00001100
System.out.println(3 << 2);//12 3*2^2=12
System.out.println(12 >> 1);//6 12/2^1=6
//4 100
//5 101 &
// 100
System.out.println(4 & 3);//0
System.out.println(4 & 8);//0
System.out.println(4 & 5);//4
System.out.println(4 & 4);//4
System.out.println(4 | 5);//5
1 & 0 = 0;
0 & 0 = 0;
1 &1 = 1;
1 | 0 = 1;
0 | 0 = 0;
1 | 1 =1;