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

Java 字符串全解析:從創建、比較到常用操作實戰

     編輯:Java 綜合教學

Java 字符串全解析:從創建、比較到常用操作實戰

在 Java 中,字符串是對象,由 java.lang.String 類表示(類名首字母大寫)。String 對象不可變,任何修改操作都會產生新對象。掌握字符串的創建機制、比較陷阱與常用 API,是寫好 Java 代碼的基礎。

1. 字符串創建方式

// 方式一:字符串字面量(常量池)
String s1 = "Hello World";

// 方式二:new 關鍵字(堆內存)
String s2 = new String("Hello World");

// 方式三:空串
String s3 = new String();

關鍵差異:字面量會進入字符串常量池,相同內容只存一份;new 總在堆創建新對象,即使內容相同也佔用不同內存地址。

2. 字符串比較:== vs equals()

String a = "a";
String b = "a";
a += "b"; // a 變為 "ab"

System.out.println(a == "ab");        // false(地址不同)
System.out.println(a == b + "b");     // false
System.out.println(b == "a");         // true(常量池同一引用)
System.out.println(a.equals("ab"));   // true(內容相等)
System.out.println(new String("ab") == new String("ab")); // false
  • == 比較引用地址(同時隱含內容比較)。
  • equals() 比較字符序列內容。
  • 編譯期常量折疊會優化 "a" + "b" 為 "ab",但運行期拼接不會。

3. 常用訪問方法

方法說明
length()返回字符數
charAt(int index)返回指定索引字符
indexOf(int ch / String str [, fromIndex])首次出現位置,找不到返回 -1
lastIndexOf(...)最後一次出現位置
getChars(srcBegin, srcEnd, dst[], dstBegin)複製字符到目標 char 數組
getBytes(...)按編碼獲取 byte 數組
toCharArray()轉為 char 數組

4. 字符串修改(實為創建新串)

  • concat(String str):拼接
  • replace(char old, char new):字符替換
  • substring(int begin [, end]):截取子串
  • toLowerCase() / toUpperCase():大小寫轉換
  • trim():去除首尾空白
  • split(String regex):正則分割

5. 性能建議

  • 頻繁拼接用 StringBuilder(非線程安全)或 StringBuffer(線程安全)。
  • 避免在循環中用 + 拼接,會產生大量臨時對象。
  • 大量字符串操作場景考慮 CharSequence 或字符數組。

字符串看似簡單,實則蘊含常量池、不可變模式、編碼轉換等核心機制,深入理解能有效避免生產環境的性能隱患與邏輯 Bug。

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