字符串---Spring字符串基本處理

一、String類的特性
  1. 不可變性
    String對象一旦創建,內容不可更改,任何修改操作都會生成新對象。
  2. 字符串常量池
    字符串字面量(如"abc")直接存儲在常量池中,重復字面量共享同一內存地址。
  3. 創建方式

雖然都是字符串但在Java中,字符串的存儲位置取決于其創建方式:通過字面量(如"abc")創建的字符串存儲在字符串常量池中,而通過new String()創建的字符串對象則存儲在堆內存中。此外,字符串常量池的具體位置隨JDK版本不同而變化(如JDK1.7后移至堆內存)

String s1 = "直接賦值";          // 常量池中創建
String s2 = new String("new對象"); // 存儲在堆中,創建新對象

二、字符串創建與初始化
1. 構造方法
//最直接最常用的方法
String s1 = "abc";
System.out.println(s1);//abc//使用new的方式來獲取一個字符串對象
String s2 = new String();//傳遞一個字符串,根據傳遞的字符串內容再創建一個新的字符串對象
String s3 = new String("abc");//將一個字符數組變成字符串,根據字符數組的內容再創建一個新的字符串對象
char[] chs = {'a', 'b', 'c', 'd'};
String s4 = new String(chs);//傳遞一個字節數組,根據字節數組的內容再創建一個新的字符串對象
byte[] bytes = {97, 98, 99, 100};
String s5 = new String(bytes);//abcd
2. 內存存儲方式

棧內存中存放的是方法,方法運行時會壓棧;

堆內存中存放的是對象,new出來的實例對象都會跑到這里來;

方法區存放的是字節碼文件,用到什么類就把他的字節碼文件臨時加載到方法區中;

但是,在有一塊特殊的代碼區就是“串池”,采用直接賦值的方式創造出來的字符串都在串池里面,而串池就在堆內存中放著;

當使用雙引號直接賦值時,系統會檢查該字符串在串池中是否存在;如果不存在則創建新的;如果存在則復用;

3. “==”的功能

“==”比較的是基本數據類型時,比較的是值,但是如果比較的是引用數據類型那一定是地址值;字符串當然是引用數據類型,只是他們的地址值因為構造函數的不同被存儲到串池和堆中,但始終也是不同的地址值;

如果非要比較字符串的值就使用equals方法;


三、常用查詢方法

方法

功能

示例

length()

返回字符串長度

"Hello".length() → 5

charAt(int index)

獲取指定索引的字符

"Java".charAt(1) → 'a'

indexOf(String str)

查找子串首次出現的位置

"apple".indexOf("p") → 1

lastIndexOf(String str)

查找子串最后一次出現的位置

"apple".lastIndexOf("p") → 2

contains(CharSequence s)

判斷是否包含子串

"Hello".contains("ell") → true

startsWith(String prefix)

判斷是否以指定字符串開頭

"file.txt".startsWith("file") → true

endsWith(String suffix)

判斷是否以指定字符串結尾

"file.txt".endsWith(".txt") → true


四、字符串操作與修改
  1. 拼接與格式化
    • concat(String str):拼接字符串(效率低于+StringBuilder
    • String.format(String format, Object... args):格式化字符串
String s = String.format("Name: %s, Age: %d", "Tom", 25);
//Name: Tom, Age: 25

說明符

作用

%s

字符串

%d

十進制整數

%f

浮點數

%n

換行符(平臺無關)

%b

布爾值(true/false

%t

日期/時間(需搭配附加符號,如 %tF 表示 YYYY-MM-DD

%%

轉義為普通 % 符號

public class FormatExample {public static void main(String[] args) {// 混合使用多種格式String result = String.format("用戶: %s%n余額: %,.2f 元%n注冊日期: %tF","王五", 2500.5, new Date());System.out.println(result);}
}
// 用戶: 王五
// 余額: 2,500.50 元
// 注冊日期: 2023-10-05
    • String.join(delimiter, elements):用分隔符連接多個字符串
String.join("-", "2023", "08", "30"); // "2023-08-30"
  1. 子字符串提取
// 提取方法substring,一般有倆參數,第一個是開始的索引,第二個是結束的索引,含左去右
// 如果只有一個參數就是截取到末尾
// 注意,此方法并不影響原字符串,只是單純截取你索引中的字符串而已
String substr = "HelloWorld".substring(5);      // "World"
String substr2 = "HelloWorld".substring(0,5);  // "Hello"
  1. 替換操作
String s = "abac".replace('a', 'Z');  // "ZbZc"(替換所有匹配字符)
String s2 = "aabbaabb".replaceAll("aa", "XX");  // "XXbbXXbb"(正則替換)
String s3 = "aabbaabb".replaceFirst("aa", "XX"); // "XXbbaabb"
  1. 大小寫轉換
String upper = "hello".toUpperCase(); // "HELLO"
String lower = "JAVA".toLowerCase();  // "java"
  1. 去除空格
String trimmed = "  text  ".trim();  // "text"(去除首尾空格)
// JDK 11+ 新增 strip() 去除Unicode空格
  1. 分割字符串
String[] parts = "a,b,c".split(","); // ["a", "b", "c"]
// 正則分割:按數字分割
String[] arr = "a1b2c3".split("\\d+"); // ["a", "b", "c"]

五、字符串比較
  1. 內容比較
boolean isEqual = str1.equals(str2);      // 區分大小寫
boolean isEqualIgnoreCase = str1.equalsIgnoreCase(str2); // 忽略大小寫
  1. compareTo方法
    按字典序比較,返回差值:
"apple".compareTo("banana"); // 返回負數('a'在'b'前)
  1. ==equals區別
    ==比較對象地址,equals比較內容。
String s1 = "abc";
String s2 = new String("abc");
s1 == s2;          // false(地址不同)
s1.equals(s2);     // true(內容相同)

六、其他工具方法
  • 空字符串檢查
boolean isEmpty = str.isEmpty();    // JDK 6+
boolean isBlank = str.isBlank();    // JDK 11+(檢查空格或空)
  • 重復字符串
String repeated = "abc".repeat(3); // JDK 11+ → "abcabcabc"

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

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

    相關文章

    26考研——中央處理器_CPU 的功能和基本結構(5)

    408答疑 文章目錄 一、CPU 的功能和基本結構CPU 的功能CPU 的基本結構運算器控制器 CPU 的寄存器運算器中的寄存器控制器中的寄存器 八、參考資料鮑魚科技課件26王道考研書 九、總結 一、CPU 的功能和基本結構 CPU 的功能 中央處理器(CPU)由運算器和控…

    傳統數據展示 vs 可視化:誰更打動人心?

    數據,每天都在我們身邊流動:從你手機里的健康步數,到企業財報中的營收增長,再到國家發布的經濟指標。但問題是——你怎么“看”這些數據? 過去,我們習慣用表格、文字和報告來展示數據,這種方式…

    Base64 編碼原理詳細解析

    Base64 編碼是一種常見的數據編碼方式,它將二進制數據轉化為可打印的 ASCII 字符串。Base64 編碼廣泛應用于電子郵件、URL 編碼、HTTP 請求和響應中等場景。它的核心作用是讓二進制數據可以通過僅支持文本的協議或媒介進行傳輸。本文將更深入地探討 Base64 編碼的原…

    一周學會Pandas2 Python數據處理與分析-Pandas2數據排序操作

    鋒哥原創的Pandas2 Python數據處理與分析 視頻教程: 2025版 Pandas2 Python數據處理與分析 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili Pandas 2提供了多種靈活的數據排序方法,主要針對 DataFrame 和 Series 對象。 1. 按值排序:s…

    計算機二級(C語言)已過

    非線性結構:樹、圖 鏈表和隊列的結構特性不一樣,鏈表可以在任何位置插入、刪除,而隊列只能在隊尾入隊、隊頭出隊 對長度為n的線性表排序、在最壞情況下時間復雜度,二分查找為O(log2n),順序查找為O(n),哈希查…

    Windows Server 2025開啟GPU分區(GPU-P)部署DoraCloud云桌面

    本文描述在ShareStation工作站虛擬化方案的部署過程。 將服務器上部署 Windows Server、DoraCloud,并創建帶有vGPU的虛擬桌面。 GPU分區技術介紹 GPU-P(GPU Partitioning) 是微軟在 Windows 虛擬化平臺(如 Hyper-V)中…

    Android RxJava框架分析:它的執行流程是如何的?它的線程是如何切換的?如何自定義RxJava操作符?

    目錄 RxJava是什么?為什么使用。RxJava是如何使用的呢?RxJava如何和Retrofit一起使用。RxJava源碼分析。 (1)他執行流程是如何的。(2)map(3)線程的切換。 如何自定義RxJava操作符…

    QT的初始代碼解讀及其布局和彈簧

    this指的是真正的當前正在顯示的窗口 main函數: Widget w是生成了一個主窗口,QT Designer是在這個主窗口里塞組件 w.show()用來展示這個主窗口 頭文件: namespace Ui{class Widget;}中的class Widget和下面的class Widget不是一個東西 Ui…

    什么是AI寫作

    一、AI寫作簡介 AI 寫作正在成為未來 10 年最炙手可熱的超級技能。已經有越來越多的人通過 AI 寫作,在自媒體、公文寫作、商業策劃等領域實現了提效,甚至產生了變現收益。 掌握 AI 寫作技能,不僅能提高個人生產力,還可能在未來的 …

    13.原生測試框架Unittest解決用例組織問題 與測試套件的使用

    13. 原生測試框架Unittest解決用例組織問題 與測試套件的使用 一、測試架構核心組件解析 1.1 系統組成模塊 #mermaid-svg-bYie0B3MLRp0HL4g {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bYie0B3MLRp0HL4g .erro…

    UE5 腳部貼地不穿過地板方案

    UE自帶的IK RIG和ControlRig技術 【UE5】角色腳部IK——如何讓腳貼在不同斜度的地面(設置腳的旋轉)_嗶哩嗶哩_bilibili 實驗后這個還是有一部分問題,首先只能保證高度不能穿過,但是腳步旋轉還是會導致穿模 IK前,整個模型在斜坡上會浮空 參考制作:https://www.youtube.com/w…

    關于 js:4. 異步機制與事件循環

    一、同步 vs 異步 1. 什么是同步(Synchronous) 同步代碼就是一行一行、按順序執行的。當前行沒有執行完,下一行不能動。 示例: console.log("A"); console.log("B"); console.log("C");輸出&am…

    如何通過外網訪問內網?對比5個簡單的局域網讓互聯網連接方案

    在實際應用中,常常需要從外網訪問內網資源,如遠程辦公訪問公司內部服務器、在家訪問家庭網絡中的設備等。又或者在本地內網搭建的項目應用需要提供互聯網服務。以下介紹幾種常見的外網訪問內網、內網提供公網連接實現方法參考。 一、公網IP路由器端口映…

    java的輸入輸出模板(ACM模式)

    文章目錄 1、前置準備2、普通輸入輸出API①、輸入API②、輸出API 3、快速輸入輸出API①、BufferedReader②、BufferedWriter 案例題目描述代碼 面試有時候要acm模式,刷慣leetcode可能會手生不會acm模式,該文直接通過幾個題來熟悉java的輸入輸出模板&…

    什么是移動設備管理(MDM)

    移動設備管理(MDM)是一種安全解決方案,旨在監控、管理和保護企業的移動設備(包括智能手機、平板電腦、筆記本電腦和計算機)。MDM軟件是IT部門的關鍵工具,其核心功能包括設備配置、安全策略實施、遠程控制及…

    c++中構造對象實例的兩種方式及其返回值

    c中,構造對象實例有兩種方式,一種返回對象實例,一種返回該對象實例的指針。如下所示: 一、兩種返回值 RedisConn conn1; //得到實例conn1;RedisConn *conn2 new RedisConn();//得到指針conn2;RedisConn conn3 new RedisConn()…

    【Unity筆記】PathCreator使用教程:用PathCreator實現自定義軌跡動畫與路徑控制

    在Unity開發過程中,角色移動、攝像機動畫、軌道系統、AI巡邏等功能中,路徑控制是常見又復雜的需求之一。如何優雅、高效地創建路徑并控制對象沿路徑運動,是游戲開發、動畫制作乃至工業仿真中的關鍵問題。 在這篇文章中,我將介紹一…

    JAVA實戰開源項目:健身房管理系統 (Vue+SpringBoot) 附源碼

    本文項目編號 T 180 ,文末自助獲取源碼 \color{red}{T180,文末自助獲取源碼} T180,文末自助獲取源碼 目錄 一、系統介紹二、數據庫設計三、配套教程3.1 啟動教程3.2 講解視頻3.3 二次開發教程 四、功能截圖五、文案資料5.1 選題背景5.2 國內…

    [人機交互]交互設計過程

    *一.設計 1.1什么是設計 設計是一項創新活動,旨在為用戶提供可用的產品 –交互設計是“設計交互式產品、以支持人們的生活和工作” 1.2設計包含的四個活動 – 識別用戶的需要( needs )并建立需求( requirements &…

    1. 視頻基礎知識

    1. 圖像基礎概念 像素:像素是一個圖片的基本單位,pix是英語單詞picture,加上英語單詞“元素element”,就得到了pixel,簡稱px。所以“像素”有“圖像元素”之意。分辨率:指的是圖像的大小或者尺寸。比如 19…