1. 程式人生 > 其它 >Java-字串的常用方法總結

Java-字串的常用方法總結

技術標籤:JavaSE總結字串java

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;