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

Java API 核心筆記:文檔註釋、String 不變性、常用方法與 StringBuilder 高效構建

     編輯:Java 綜合教學

Java API 核心筆記:文檔註釋、String 不變性、常用方法與 StringBuilder 高效構建

本文系統整理 Java 基礎 API 核心知識點:Javadoc 文檔註釋規範、String 不可變機制與常量池復用、長度/查找/截取/去空格/字符訪問/大小寫轉換/valueOf 等高頻方法實戰、StringBuilder 可變字符序列的增刪改查與性能對比,附大量代碼示例與圖解。

1. Javadoc 文檔註釋規範

文檔註釋可用於類、字段、方法,經 javadoc 命令生成 API 手冊。標準標籤:

/**
 * 類說明
 * @author 作者
 * @version 版本號
 * @see 參考類
 * @since 起始版本
 */
public class Demo {
    /** 常量說明 */
    public static final String INFO = "Hello";

    /**
     * 方法說明
     * @param name 參數說明
     * @return 返回值說明
     */
    public static String sayHello(String name) { return INFO + name; }
}

2. String 不可變與常量池復用

  • 不可變: String 對象一旦創建,內容不可更改,任何修改操作(拼接、替換、截取)都會創建新對象。
  • 字面量復用: 直接賦值 String s = "abc" 會檢查字符串常量池,已存在則返回引用,否則創建並入池。
  • new 創建不復用: new String("abc") 強制在堆中創建新對象。
  • 編譯期優化: "ab" + "cd" 編譯期直接合併為 "abcd",故復用常量池對象;但 String s = "ab"; s + "cd" 運行期創建新對象。
String s1 = "fury123";
String s2 = "fury123";           // true (常量池復用)
String s3 = new String("fury123"); // false (堆新對象)
String s4 = "fury" + "123";      // true (編譯期優化)
String s5 = "fury"; s5 + "123";  // false (運行期 new StringBuilder)

3. String 高頻方法實戰

方法說明示例
length()字符數(中英文均計 1)"你好Java".length() == 6
indexOf(str[, fromIndex])首次出現索引,無則 -1"thinking in java".indexOf("java") == 12
lastIndexOf(str)最後一次出現索引"ababa".lastIndexOf("aba") == 2
substring(begin, end)截取 [begin, end),含頭不含尾"www.oracle.com".substring(4,10) == "oracle"
trim()去除首尾空白字符(≤空格),改變內容則新對象" abc ".trim() == "abc"
charAt(index)獲取指定位置字符"Java".charAt(2) == 'v'
startsWith/endsWith前綴/後綴判斷"test.jpg".endsWith(".jpg") == true
toUpperCase/toLowerCase大小寫轉換,僅影響字母"AbC".toLowerCase() == "abc"
valueOf(obj)靜態方法,任意類型轉字符串,""+x 效果同但較慢String.valueOf(123) == "123"

4. 實戰案例

域名提取

String url = "https://www.example.com/path";
int firstDot = url.indexOf(".");
int secondDot = url.indexOf(".", firstDot + 1);
String domain = url.substring(firstDot + 1, secondDot); // "example"

回文判斷

public static boolean isPalindrome(String s) {
    for (int i = 0, j = s.length() - 1; i < j; i++, j--) {
        if (s.charAt(i) != s.charAt(j)) return false;
    }
    return true;
}

驗證碼忽略大小寫

if (input.toLowerCase().equals("f1w3")) { /* 通過 */ }

5. StringBuilder 高效構建字符串

內部維護可擴容字符數組,避免頻繁創建 String 對象。核心方法:

  • append(x):追加任意類型(自動 valueOf)
  • delete(start, end):刪除區間
  • replace(start, end, str):替換區間
  • insert(offset, x):插入
  • reverse():反轉(回文判斷神器)
  • toString():轉為 String

6. 性能對比實證

// 1000 萬次拼接
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10_000_000; i++) sb.append("a"); // ~幾十毫秒

String s = "a";
for (int i = 0; i < 10_000_000; i++) s += "a"; // ~數分鐘,產生海量臨時對象觸發頻繁 GC

7. 練習題:輸出所有漢字(Unicode \u4E00-\u9FA5),每 50 個換行

StringBuilder sb = new StringBuilder();
for (char c = '\u4E00', i = 1; c <= '\u9FA5'; c++, i++) {
    sb.append(c);
    if (i % 50 == 0) sb.append('\n');
}
System.out.println(sb.toString());

熟練掌握 String 與 StringBuilder 的特性邊界,是寫出高性能、低內存佔用 Java 代碼的基礎功力。

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