Java String 類

Java String 類常用方法詳解

在 Java 編程里,字符串操作十分常見,而 String 類作為 Java 標準庫的核心類,用于表示不可變的字符序列。任何對字符串的修改操作都會返回一個新的字符串對象,不會改變原始字符串。本文將詳細介紹 String 類的常用方法,并結合示例代碼幫助理解。

一、String 對象的創建

String 對象的創建主要有以下兩種方式:

1. 直接賦值

這是最常見的創建字符串的方式,使用雙引號將一系列字符括起來即可:

String str1 = "Hello, ";

2. 使用 new 關鍵字

通過對象實例化的方式,將需要創建的字符串作為構造參數傳入:

String str2 = new String("Hello, Java");

若調用 String 類的無參構造方法,則會創建一個空字符串,不過這種方式很少使用:

String str3 = new String();

二、獲取字符串長度

可以使用 length() 方法來獲取字符串的長度,示例代碼如下:

public class StringMethod1 {public static void main(String[] args) {String str = "hello world!";int length = str.length();System.out.println("str的長度為:" + length);}
}

運行結果:

str的長度為:12

需要注意的是,字符串中的空格也算一個字符。

三、字符串查找

1. 獲取指定位置字符

使用 char charAt(int index) 方法可以獲取字符串指定位置的字符,索引下標從 0 開始。示例如下:

public class StringMethod2 {public static void main(String[] args) {String str = "I love Java";char c = str.charAt(7);System.out.println("索引位置為7的字符為:" + c);}
}

運行結果:

索引位置為7的字符為:J

2. 查找字符串位置

  • indexOf():獲取字符或子串在字符串中第一次出現的位置。
  • lastIndexOf():獲取字符或子串在字符串中最后一次出現的位置。

示例代碼如下:

public class StringMethod2 {public static void main(String[] args) {String str = "I love Java, I love imooc!";// 獲取字符在字符串中第一次出現的位置int i1 = str.indexOf('a');System.out.println("字符a在字符串str第一次出現的位置為:" + i1);// 獲取子串在字符串中第一次出現的位置int i2 = str.indexOf("love");System.out.println("子串love在字符串str第一次出現的位置為:" + i2);// 獲取字符在字符串中最后一次出現的位置int i3 = str.lastIndexOf('e');System.out.println("字符e在字符串str最后一次出現的位置為:" + i3);// 獲取子串在字符串中最后一次出現的位置int i4 = str.lastIndexOf("I love");System.out.println("子串I love在字符串str最后一次出現的位置為:" + i4);// 查找不存在的字符int i5 = str.indexOf('E');System.out.println("查找不存在的字符E的結果為:" + i5);}
}

運行結果:

字符a在字符串str第一次出現的位置為:8
子串love在字符串str第一次出現的位置為:2
字符e在字符串str最后一次出現的位置為:18
子串I love在字符串str最后一次出現的位置為:13
查找不存在的字符E的結果為:-1

需要注意的是,以上方法的參數都是區分大小寫的,如果沒有找到指定的字符或子串,會返回 -1。

四、字符串截取

可以使用 substring() 方法來獲取子串,String 類中有兩個重載的實例方法:

  • String substring(int beginIndex):獲取從 beginIndex 位置開始到結束的子串。
  • String substring(int beginIndex, int endIndex):獲取從 beginIndex 位置開始到 endIndex 位置的子串(不包含 endIndex 位置字符)。

示例代碼如下:

public class StringMethod3 {public static void main(String[] args) {String str = "I love Java";String substring1 = str.substring(2);String substring2 = str.substring(2, 6);System.out.println("從索引位置2到結束的子串為:" + substring1);System.out.println("從索引位置2到索引位置6的子串為:" + substring2);}
}

運行結果:

從索引位置2到結束的子串為:love Java
從索引位置2到索引位置6的子串為:love

五、字符串切割

1. 切割為子串數組

使用 String[] split(String regex) 方法可將字符串切割為子串,其參數 regex 是一個正則表達式分隔符,返回字符串數組。示例如下:

public class StringMethod4 {public static void main(String[] args) {String str1 = "I love Java";String[] strArr = str1.split(" ");for (String str : strArr) {System.out.print(str + "\t");}}
}

運行結果:

I	love	Java

對于一些特殊的分隔符,如 *^:|. 等,需要使用轉義字符轉義。例如:

// 以 * 切割
String str2 = "I*love*Java";
String[] strArr2 = str2.split("\\*");// 以 \ 切割
String str3 = "I\\love\\Java";
String[] strArr3 = str3.split("\\\\");// 以 | 切割
String str4 = "I|love|Java";
String[] strArr4 = str4.split("\\|");

另外,還有一個重載方法 String[] split(String regex, int limit),其第二個參數 limit 用以控制正則匹配被應用的次數,會影響結果的長度。

2. 切割為 byte 數組

在實際工作中,網絡上的數據傳輸通常使用二進制字節數據,因此字符串和字節數組之間的相互轉換很常用。可以使用 getBytes() 方法將字符串轉換為 byte 數組,示例如下:

public class StringMethod4 {public static void main(String[] args) {String str2 = "我喜歡Java";System.out.println("將字符串轉換為byte數組:");byte[] ascii = str2.getBytes();for (byte aByte : ascii) {System.out.print(aByte + "\t");}// 將字節數組轉換為字符串String s = new String(ascii);System.out.println("\n將字節數組轉換為字符串:" + s);}
}

六、字符串大小寫轉換

字符串的大小寫轉換有兩個方法:

  • toLowerCase():將字符串轉換為小寫。
  • toUpperCase():將字符串轉換為大寫。

示例代碼如下:

public class StringMethod5 {public static void main(String[] args) {String str = "HELLO world";String s1 = str.toLowerCase();System.out.println("字符串str轉換為小寫后為:" + s1);String s2 = s1.toUpperCase();System.out.println("字符串s1轉換為大寫后為:" + s2);// 實現大小寫互換String[] strArr = str.split(" ");String result = strArr[0].toLowerCase() + " " + strArr[1].toUpperCase();System.out.println("字符串str的大小寫互換后為:" + result);}
}

運行結果:

字符串str轉換為小寫后為:hello world
字符串s1轉換為大寫后為:HELLO WORLD
字符串str的大小寫互換后為:hello WORLD

七、字符串比較

String 類提供了 boolean equals(Object object) 方法來比較字符串內容是否相同,返回一個布爾類型的結果。需要特別注意的是,在比較字符串內容是否相同時,必須使用 equals() 方法而不能使用 == 運算符。示例代碼如下:

public class StringMethod6 {public static void main(String[] args) {String str1 = "hello";String str2 = "hello";String str3 = new String("hello");System.out.println("使用equals()方法比較str1和str2的結果為:" + str1.equals(str2));System.out.println("使用==運算符比較str1和str2的結果為:" + (str1 == str2));System.out.println("使用equals()方法比較str1和str3的結果為:" + str1.equals(str3));System.out.println("使用==運算符比較str1和str3的結果為:" + (str1 == str3));}
}

運行結果:

使用equals()方法比較str1和str2的結果為:true
使用==運算符比較str1和str2的結果為:true
使用equals()方法比較str1和str3的結果為:true
使用==運算符比較str1和str3的結果為:false

== 運算符比較的是兩個變量的地址而不是內容。當使用直接賦值的方式創建字符串時,相同內容的字符串會指向常量池中的同一個對象;而使用 new 關鍵字創建字符串對象時,會在堆空間實例化一個新的對象。

八、小結

本文介紹了 Java String 類的常用方法:

  • 使用 length() 方法可以獲取字符串長度。
  • 使用 charAt()indexOf() 以及 lastIndexOf() 方法可以對字符串進行查找。
  • substring() 方法可以對字符串進行截取,split()getBytes() 方法可以將字符串切割為數組。
  • toLowerCase()toUpperCase() 方法分別用于大小寫轉換,使用 equals() 方法對字符串進行比較,要注意對字符串內容進行比較時,不要使用 == 運算符。

這些方法大多有重載方法,實際工作中,要根據合適的場景選用對應的重載方法。此外,String 類還有很多未介紹到的方法,使用時可以翻閱官網文檔進行學習。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896250.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896250.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896250.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

9.【線性代數】—— 線性相關性, 向量空間的基,維數

九 線性相關性, 向量空間的基,維數 Ax0 什么情況下無解(x不為零向量)1. 向量組的線性無關性2.向量組生成一個空間(S)3. 向量空間的一組基:都滿足向量個數相同4. 空間維數 基向量的個數 Ax0 什么情況下無解(x不為零向量) Ax0無解&#xff0c…

藍橋杯單片機組第十二屆省賽第二批次

前言 第十二屆省賽涉及知識點:NE555頻率數據讀取,NE555頻率轉換周期,PCF8591同時測量光敏電阻和電位器的電壓、按鍵長短按判斷。 本試題涉及模塊較少,題目不難,基本上準備充分的都能完整的實現每一個功能,并…

opencv:距離變換 cv2.distanceTransform

函數 cv2.distanceTransform() 用于計算圖像中每一個非零點像素與其最近的零點像素之間的距離(Distance Transform, DT算法),輸出的是保存每一個非零點與最近零點的距離信息;圖像上越亮的點,代表了離零點的距離越遠。 …

基于Spring Boot的黨員學習交流平臺設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導,歡迎高校老師/同行前輩交流合作?。 技術范圍:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:…

自動駕駛兩個傳感器之間的坐標系轉換

有兩種方式可以實現兩個坐標系的轉換。 車身坐標系下一個點p_car,需要轉換到相機坐標系下,旋轉矩陣R_car2Cam,平移矩陣T_car2Cam。點p_car在相機坐標系下記p_cam. 方法1:先旋轉再平移 p_cam T_car2Cam * p_car T_car2Cam 需要注…

k8s ssl 漏洞修復

針對Kubernetes集群中SSL/TLS協議信息泄露漏洞(CVE-2016-2183)的修復,需重點修改涉及弱加密算法的組件配置。以下是具體修復步驟及驗證方法: 一、漏洞修復步驟 1. 修復etcd服務 修改配置文件 : 編輯 /etc/kubernetes/…

數字IC后端培訓教程| 芯片后端實戰項目中base layer drc violation解析

今天分享一個咱們社區IC后端訓練營學員遇到的一個經典DRC案例。這個DRC Violation的名字為PP.S.9(這里的PP就是Plus P)。這一層是屬于管子的base layer。更多關于base layer的介紹,可以查看下面這份教程。 https://alidocs.dingtalk.com/api/doc/transit?spaceId5…

從零到一學習c++(基礎篇--筑基期十一-類)

從零到一學習C(基礎篇) 作者:羨魚肘子 溫馨提示1:本篇是記錄我的學習經歷,會有不少片面的認知,萬分期待您的指正。 溫馨提示2:本篇會盡量用更加通俗的語言介紹c的基礎,用通俗的語言去…

DeepSeek技術全景解析:架構創新與行業差異化競爭力

一、DeepSeek技術體系的核心突破 架構設計:效率與性能的雙重革新 Multi-head Latent Attention (MLA):通過將注意力頭維度與隱藏層解耦,實現顯存占用降低30%的同時支持4096超長上下文窗口。深度優化的MoE架構:結合256個路由專家…

插入排序:一種簡單而直觀的排序算法

大家好!今天我們來聊聊一個簡單卻非常經典的排序算法——插入排序(Insertion Sort)。在所有的排序算法中,插入排序是最直觀的一個。 一、插入排序的基本思想 插入排序的核心思想是:將一個待排序的元素,插…

2025年校園網絡招聘會匯總

1、衛生健康行業2025屆畢業生春季校園網絡招聘會 企業數量職位數量崗位數量10020002000 訪問地址: https://www.weirenjob.com/zph/zph_wsjkxy2025jbyscjxywlzph/ 2、山東地區面向2025屆高校畢業生網絡招聘活動 企業數量職位數量崗位數量909271052434 訪問地址&a…

Windows 10 GPU STACK 0.5.1 安裝

Windows 10 GPU STACK 0.5.1 安裝 1 GPUStack 安裝1.Python安裝(3.10/11/12)2.GPUStack 下載3.生成密碼4.訪問5.設置模型下載目錄6.禁用開機自啟并重啟服務7.安裝模型8.查看安裝的進度 2.試驗場聊天測試1.對話模式 3.API Key 測試 1 GPUStack 安裝 1.Py…

【數據結構】快指針和慢指針

一、 給你單鏈表的頭結點 head ,請你找出并返回鏈表的中間結點。如果有兩個中間結點,則返回第二個中間結點。 要求:只遍歷一遍鏈表 可以使用快慢指針:fast 一次走兩步,slow 一次走一步。當 fast NULL(偶數個結點)或…

1.3 嵌入式系統的固件

嵌入式系統的固件,一般情況下的作用是: 1.硬件抽象層(HAL):固件提供了一個硬件抽象層,它將硬件的復雜性隱藏起來,為上層軟件提供了一套標準的接口。這樣,操作系統和應用程序不需要直接與硬件打交…

中國工業互聯網研究院:人工智能大模型年度發展趨勢報告

當前,以大模型為代表的人工智能正快速演進,激發全球科技之變、產業之變、時代之變,人工智能發展迎來新高潮。隨著大模型推理、多模態生成、智能體等創新技術的發展,大模型賦能千行百業將進一步提速。中國工業互聯網研究院全方位剖…

【cv】vs2022配置opencv

release下配置包含目錄和庫目錄 E:\sdk\sdk_cuda12.3\opencv490\include E:\sdk\sdk_cuda12.3\opencv490\include\opencv2 E:\sdk\sdk_cuda12.3\opencv490\lib release下配置包含鏈接器輸入的依附依賴項 opencv_world490.lib release編譯文件夾下需手動復制opencv_world49…

Python Pandas庫使用指南:從入門到精通

1. 引言 Pandas 是 Python 中用于數據處理和分析的核心庫之一。它提供了高效的數據結構(如 DataFrame 和 Series),能夠輕松處理結構化數據,支持數據清洗、過濾、聚合、合并等操作。Pandas 在數據分析、機器學習和科學計算領域中被廣泛使用。 本文將詳細介紹 Pandas 的基本…

Visual Studio中打開多個項目

1) 找到解決方案窗口 2) 右鍵添加→ 選擇現有項目 3) 選擇.vcxproj文件打開即可

react路由總結

目錄 一、腳手架基礎語法(16~17) 1.1、hello react 1.2、組件樣式隔離(樣式模塊化) 1.3、react插件 二、React Router v5 2.1、react-router-dom相關API 2.1.1、內置組件 2.1.1.1、BrowserRouter 2.1.1.2、HashRouter 2.1.1.3、Route 2.1.1.4、Redirect 2.1.1.5、L…

內外網隔離文件傳輸解決方案|系統與釘釘集成+等保合規,安全提升70%

一、背景與痛點 在內外網隔離的企業網絡環境中,員工與外部協作伙伴(如釘釘用戶)的文件傳輸面臨以下挑戰: 1. **安全性風險**:內外網直連可能導致病毒傳播、數據泄露。 2. **操作繁瑣**:傳統方式需頻繁切…