Java字符串操作技巧之語法、示例與應用場景分析
引言
在Java算法題和日常開發(fā)中,字符串處理是必備的核心技能。本文全面梳理Java中字符串的常用操作語法,結合代碼示例、應用場景和避坑指南,可快速掌握字符串處理技巧,輕松應對筆試面試高頻題目。
1. 基礎操作
1.1 創(chuàng)建字符串
// 方式1:直接賦值(推薦) String s1 = "Hello"; // 方式2:構造函數 String s2 = new String("Hello");
特點:
- 直接賦值會復用字符串常量池對象,內存更高效
new
會強制創(chuàng)建新對象,地址不同
1.2 獲取長度
int len = s1.length(); // 5
應用場景:遍歷字符串、判空操作
注意:空字符串""
的長度為0
1.3 訪問字符
char c = s1.charAt(1); // 'e'
經典應用:回文串判斷
// 判斷回文示例 public boolean isPalindrome(String s) { int left = 0, right = s.length() - 1; while (left < right) { if (s.charAt(left++) != s.charAt(right--)) return false; } return true; }
2. 字符串處理
2.1 子字符串提取
// 截取從索引1到末尾 String sub1 = s1.substring(1); // "ello" // 截取索引1到3(左閉右開) String sub2 = s1.substring(1, 3); // "el"
應用場景:
- 提取文件名后綴
- 解析特定格式字符串(如日期)
2.2 字符串拼接
// 方式1:+運算符(編譯時優(yōu)化) String s3 = s1 + " World!"; // 方式2:concat方法 String s4 = s1.concat(" World!"); // 方式3:StringBuilder(高效) StringBuilder sb = new StringBuilder(); sb.append(s1).append(" World!"); String result = sb.toString();
性能對比:
- 單次拼接:
+
更簡潔 - 循環(huán)拼接:必須用
StringBuilder
2.3 字符串查找
// 查找字符位置 int index1 = s1.indexOf('e'); // 1 int lastIndex = s1.lastIndexOf('l'); // 3 // 查找子串位置 int index2 = s1.indexOf("llo"); // 2
返回值:找到返回索引,未找到返回-1
2.4 字符串替換
// 簡單替換 String s5 = s1.replace('l', 'L'); // "HeLLo" // 正則替換(所有元音替換為*) String s6 = s1.replaceAll("[aeiou]", "*"); // "H*ll*"
注意:
replaceAll
第一個參數是正則表達式- 特殊字符需轉義,如
replaceAll("\\+", "-")
3. 高級操作
3.1 字符串分割
// 按逗號分割 String[] arr1 = "a,b,c".split(","); // ["a", "b", "c"] // 按點分割(需轉義) String[] arr2 = "a.b.c".split("\\.");
應用場景:解析CSV數據、日志分析
3.2 類型轉換
// 字符串 ? 字符數組 char[] chars = s1.toCharArray(); String s7 = new String(chars); // 其他類型 → 字符串 String s8 = String.valueOf(123); // "123" String s9 = Integer.toString(456); // "456"
3.3 正則匹配
// 驗證是否全數字 boolean isNumber = "123".matches("\\d+"); // true // 提取郵箱格式 String email = "test@example.com"; boolean isValid = email.matches("[a-zA-Z0-9]+@[a-z]+\\.[a-z]{2,3}");
應用場景:數據校驗、格式檢查
4. 性能優(yōu)化
4.1 選擇合適的數據結構
場景 | 推薦類型 | 原因 |
---|---|---|
高頻修改字符串 | StringBuilder | 非線程安全但速度快 |
多線程環(huán)境修改 | StringBuffer | 線程安全 |
只讀操作 | String | 不可變特性保證安全性 |
4.2 高效操作示例
案例:反轉字符串
// 方法1:StringBuilder public String reverse1(String s) { return new StringBuilder(s).reverse().toString(); } // 方法2:字符數組 public String reverse2(String s) { char[] arr = s.toCharArray(); int left = 0, right = arr.length - 1; while (left < right) { char temp = arr[left]; arr[left++] = arr[right]; arr[right--] = temp; } return new String(arr); }
5. 總結
關鍵知識點
- 不可變性:String對象創(chuàng)建后不可修改,修改操作會生成新對象
- 比較原則:內容比較必須用
equals()
,==
比較對象地址 - 性能陷阱:避免在循環(huán)中使用
+
拼接字符串 - 工具選擇:根據場景選擇String/StringBuilder/StringBuffer
高頻算法題應用
- 字符串反轉:使用雙指針或StringBuilder
- 子串查找:KMP算法(可結合
indexOf
優(yōu)化) - 括號匹配:棧+字符遍歷
掌握這些字符串操作技巧,能顯著提升算法題的解決效率。建議結合LeetCode等平臺的字符串分類題目進行實戰(zhàn)練習(如LeetCode 344. 反轉字符串)。
到此這篇關于Java字符串操作全解析:語法、示例與應用場景的文章就介紹到這了,更多相關java字符串內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis plus實現(xiàn)Distinct去重功能
這篇文章主要介紹了Mybatis plus實現(xiàn)Distinct去重功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12Springboot Tomcat APR模式詳解和實踐記錄
這篇文章主要介紹了Springboot Tomcat APR模式詳解和實踐記錄,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-04-04Spring Boot學習入門之統(tǒng)一異常處理詳解
我們在做Web應用的時候,請求處理過程中發(fā)生錯誤是非常常見的情況。下面這篇文章主要給大家介紹了關于Spring Boot學習入門之統(tǒng)一異常處理的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。2017-09-09springboot中Controller中postman遇到的傳參問題及解決
這篇文章主要介紹了springboot中Controller中postman遇到的傳參問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07