首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 字符串遍歷兩種方式:for 索引 + charAt() 與 for-each + toCharArray() 對比

     編輯:Java 綜合教學

方式一:傳統 for 循環 + charAt()

public class StrCharAt {
    public static void main(String[] args) {
        String a = "A quick bronze fox lept a lazy bovine";
        for (int i = 0; i < a.length(); i++) {
            System.out.println("Char " + i + " is " + a.charAt(i));
        }
    }
}

特點

  • 可獲取字符索引位置
  • 適合需要索引的邏輯(如判斷位置、修改特定位置)
  • 直接訪問底層 char[] value,無額外對象創建

方式二:增強 for 循環 + toCharArray()

public class ForEachChar {
    public static void main(String[] args) {
        String s = "Hello World";
        for (char c : s.toCharArray()) {
            System.out.println(c);
        }
    }
}

特點

  • 代碼更簡潔、可讀性強
  • 無法直接獲取索引(需額外變量計數)
  • toCharArray() 會創建字符數組副本,長字符串有內存/GC 開銷

效能與選擇建議

場景推薦方式理由
短字符串、簡單遍歷打印for-each + toCharArray語法糖,碼簡單
長字符串、高頻調用for + charAt避免數組複製
需索引、需修改特定位置for + charAt天然支持索引
需轉字節/編碼處理getBytes(Charset)處理多字節字符

補充:Java 8+ Stream 風格

"Hello".chars().forEach(c -> System.out.println((char)c));
// 或
"Hello".codePoints().forEach(cp -> System.out.println(new String(Character.toChars(cp))));
  • chars():返回 IntStream(char 代碼單元)
  • codePoints():返回 IntStream(Unicode 碼點,正確處理輔助字符)
  • 函數式風格,便於鏈式操作(filter、map、collect)

字符與碼點提示

Java char 是 UTF-16 代碼單元(2 字節),無法獨立表示 Emoji 等輔助平面字符**(需代理對)。遍歷含 Emoji 字符串請用 codePoints() 或 Character.toChars 處理。

根據場景選擇合適方式,兼顧可讀性與效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved