java中的String 以及其方法(超詳細!!!)

文章目錄

  • 一、String類型是什么
    • String不可變的原因(經典面試題)
    • String不可變的好處
  • 二、String的常用構造形式
    • 1.使用常量串構造
    • 2.使用newString對象構造
    • 3.字符串數組構造
  • 三、常用方法
    • 1. length() 獲取字符串的長度
    • 2. charAt() 獲取字符串中指定字符的值 (代碼單元)
    • 3. codePointAt() 獲取字符串中指定字符的值的代碼點(編碼值) (Ascll碼值)
    • 4.equals() 比較字符串是否相等
      • 【補充】(擴展) == 與 equals的區別
    • 5.substring(a,b) 字符串截取 要a不要b 要頭不要尾
    • 6.indexOf() 查找某個子字符串所在的位置 ,如果存在 返回第一次出現子串的具體位置的索引值,如果不存在 返回-1
    • 7. lastIndexOf() 查找某個子字符串所在最后一次的位置,如果存在 返回最后一次出現子串的具體位置的索引值,如果不存在 返回-1
    • 8.startsWith() 是否是以某個字串開頭的 ,如果是 返回true 如果不是 返回false
    • 9.endsWith() 是否是以某個字串結尾的 , 如果 是 返回true 如果 不是 返回false
    • 10.contains() 是否包含某個字串 , 如果 是 返回true 如果 不是 返回false
    • 11.replace(olderchar,newchar)替換某個子字符串 replaceAll()替換所有
      • 【擴展】[replace 與 replaceAll 的區別](https://blog.csdn.net/qq_55846232/article/details/140401676?spm=1001.2014.3001.5502)
    • 12.toUpperCase() 把字母轉換成大寫
    • 13.toLowerCase() 把字母轉換成小寫
    • 14.trim() 去字符串開頭結尾空格

一、String類型是什么

String類型其實就是定義字符串的一種類型,它可以直接定義我們想要表示的字符串
String是不可變類型

String不可變的原因(經典面試題)

在這里插入圖片描述

1.String是final類型的類,value也是final類型的數組,但這不是String不可變的根本原因,String不可變是因為value是private,且并沒有提供對外的get和set
2.底層char[]數組有final修飾,意味著這個數組不能擴容等,來達到存更多的字符,final修飾char類型數組,保證數組一旦被賦值 不能在重新賦值,修改char類型數組后,地址不能改變,內容可變,但是沒有具體的方法去修改內容
3.char[]數組是私有的,我們程序員無法直接操作這個char[]數組,而且String沒有提供這樣的方法,來修改char[]數組的元素的值。

String不可變的好處

可以共享,也是為了安全

二、String的常用構造形式

1.使用常量串構造

public static void main(String[] args) {String s1 = "asd";System.out.println(s1);}

運行結果:

asd

2.使用newString對象構造

 public static void main(String[] args) {String s1 = new String("asdasd");System.out.println(s1);}

運行結果:

asdasd

3.字符串數組構造

public static void main(String[] args) {char[] array = {'h','e','l','l','o'};String s1 = new String(array);System.out.println(s1);}

運行結果:

hello

需要注意的是字符串數組里的數據要用單引號不要使用雙引號

三、常用方法

1. length() 獲取字符串的長度

String test = "asdasdasdasd";
System.out.println(test.length());

運行結果

12

2. charAt() 獲取字符串中指定字符的值 (代碼單元)

String test = "asdasdasdasd";
System.out.println(test.charAt(0));

運行結果

a

3. codePointAt() 獲取字符串中指定字符的值的代碼點(編碼值) (Ascll碼值)

String test = "asdasdasdasd";
System.out.println(test.codePointAt(0));

運行結果

97

4.equals() 比較字符串是否相等

String test = "asdasdasdasd";
String test1 = "aaaadddd";
System.out.println(test.equals(test1));

運行結果

false

【補充】(擴展) == 與 equals的區別

String str3 = new String(“123”) 在內存中傳遞過程 會開辟兩個或三個空間
String str1 = “123” 與String str3 = new String(“123”)不相同 是因為地址不同
== 在java中的含義是比較地址
首先 ,equals方法是不能作用與基本數據類型的變量
如果沒有對equals 方法進行重寫,則它比較的是引用類型變量的地址
像String、Data等類對equals方法進行了重寫的話,比較的是所指向的對象的內容

public static void main(String[] args) {String test = "asdasdasdasd";String test1 = new String("asdasdasdasd");System.out.println(test == test1);System.out.println(test.equals(test1));}

運行結果

false
true

5.substring(a,b) 字符串截取 要a不要b 要頭不要尾

String s1 = "asdasdasdasd";
System.out.println(s1.substring(0,4));

運行結果

asda

6.indexOf() 查找某個子字符串所在的位置 ,如果存在 返回第一次出現子串的具體位置的索引值,如果不存在 返回-1

String s1 = "asdasdasdasd";
System.out.println(s1.indexOf("a"));
System.out.println(s1.indexOf("a",1));  //1的意思是跳過一個字符  就是跳過a字符 在尋找

運行結果

0
3

7. lastIndexOf() 查找某個子字符串所在最后一次的位置,如果存在 返回最后一次出現子串的具體位置的索引值,如果不存在 返回-1

String test = "asdasdasdasd"
System.out.println(test.lastIndexOf("d"));

運行結果

11

8.startsWith() 是否是以某個字串開頭的 ,如果是 返回true 如果不是 返回false

String s1 = "asdasdasdasd";
System.out.println(s1.startsWith("as"));
System.out.println(s1.startsWith("sd"));

運行結果

true
false

9.endsWith() 是否是以某個字串結尾的 , 如果 是 返回true 如果 不是 返回false

String s1 = "asdasdasdasd";
System.out.println(s1.endsWith("as"));
System.out.println(s1.endsWith("sd"));

運行結果

false
true

10.contains() 是否包含某個字串 , 如果 是 返回true 如果 不是 返回false

 String s1 = "asdasdasdasd";
System.out.println(s1.contains("as"));

運行結果

true

11.replace(olderchar,newchar)替換某個子字符串 replaceAll()替換所有

String s1 = "asdasdasdasd,\r";
System.out.println(s1.replace("as","11"));
System.out.println(s1.replaceAll("\r","*"));

運行結果

11d11d11d11d,
asdasdasdasd,*

【擴展】replace 與 replaceAll 的區別

12.toUpperCase() 把字母轉換成大寫

String s1 = "asdasdasdasd";
System.out.println(s1.toUpperCase());

運行結果:

ASDASDASDASD

13.toLowerCase() 把字母轉換成小寫

String s1 = "aSdAsDasdasd";
System.out.println(s1.toLowerCase());

運行結果

asdasdasdasd

14.trim() 去字符串開頭結尾空格

String s1 = " aSdAsDasdasds";
System.out.println(s1);
System.out.println(s1.trim());

運行結果
在這里插入圖片描述

感謝大家的收看和支持 ,歡迎大家來指正!!!

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

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

相關文章

水的幾個科學問題及引發的思考

水的幾個科學問題及引發的思考 兩個相同的容器A和B,分別裝有同質量的水,然后,在A容器中加入水,在B容器中加入冰,如果加入水和冰的質量相同。問,容器B的水位將與容器A的水位相同嗎(假設冰未融化時…

Log4j的原理及應用詳解(二)

本系列文章簡介: 在軟件開發的廣闊領域中,日志記錄是一項至關重要的活動。它不僅幫助開發者追蹤程序的執行流程,還在問題排查、性能監控以及用戶行為分析等方面發揮著不可替代的作用。隨著軟件系統的日益復雜,對日志管理的需求也日…

MySQL和SQlServer的區別

MySQL和SQlServer的區別 說明:在一些常用的SQL語句中,MySQL和SQLServer存在有一些區別,后續我也會將我遇到的不同點持續更新在這篇博客中。 1. 獲取當前時間 SQLServer: -- SQLServer -- 1.獲取當前時間 SELECT GETDATE(); --…

Vue2切換圖片小案例

代碼中 v-show "index>0",是表示下標只有大于零時上一頁按鈕才會顯示v-show "index<list.length-1",是表示下標只有小于list數組的最大值才會顯示&#xff0c;反之隱藏。click "index--"和click "index",是點擊按鈕后加減數…

【ZooKeeper學習筆記】

1. ZooKeeper基本概念 Zookeeper官網&#xff1a;https://zookeeper.apache.org/index.html Zookeeper是Apache Hadoop項目中的一個子項目&#xff0c;是一個樹形目錄服務Zookeeper翻譯過來就是動物園管理員&#xff0c;用來管理Hadoop&#xff08;大象&#xff09;、Hive&…

AR0132AT 1/3 英寸 CMOS 數字圖像傳感器可提供百萬像素 HDR 圖像處理(器件編號包含:AR0132AT6R、AR0132AT6C)

AR0132AT 1/3 英寸 CMOS 數字圖像傳感器&#xff0c;帶 1280H x 960V 有效像素陣列。它能在線性或高動態模式下捕捉圖像&#xff0c;且帶有卷簾快門讀取。它包含了多種復雜的攝像功能&#xff0c;如自動曝光控制、開窗&#xff0c;以及視頻和單幀模式。它適用于低光度和高動態范…

QML界面控件加載與顯示順序

一、QML界面控件加載順序 QML在界面加載時的順序和我們認知的有很大的不同&#xff0c;有時候會對我們獲取參數以及界面實現造成很大的困擾 1、加載順序 import QtQuick 2.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.VirtualKeyboard 2.4Window {id: …

Open3D點云算法與點云深度學習案例匯總(長期更新)

目錄 引言 Open3D算法匯總 Open3D快速安裝 測試點云資料 一、點云的讀寫與顯示 二、KD tree和八叉樹的應用 三、點云特征提取 四、點云濾波算法 五、點云配準算法 六、點云分割算法&#xff08;待更新&#xff09; 七、常用操作 八、數據轉換 九、常用小工具 三維…

交換機的二三層原理

相同VLAN的交換機交換原理&#xff08;二層交換原理&#xff09;&#xff1a; 交換機收到數據幀&#xff0c;首先會檢查數據幀的VLAN標簽和目標MAC&#xff0c;若屬于相同VLAN&#xff0c;且該目標MAC在本地MAC表中&#xff0c;則直接根據出接口進行數據轉發 不同VLAN的交換機…

九盾安防:如何調控叉車限速器的報警速度呢

在繁忙的物流倉儲和制造業環境中&#xff0c;叉車是不可或缺的搬運設備。然而&#xff0c;其高速行駛也帶來了潛在的安全隱患。為了確保作業人員和貨物的安全&#xff0c;又車限速器的設置顯得尤為關鍵。那么&#xff0c;如何調控叉車限速器的報警速度呢? 叉車限速器的速度調整…

復制vmware虛擬機文件并改名(文件名使用python替換)得到一臺新的虛擬機

文章目錄 需求實驗復制文件夾并重命名使用python將所有文件名“WinSer2022”字符替換成“wingetmac”修改虛擬機配置文件&#xff08;.vmx&#xff09;打開新的虛擬機成功 需求 將已有的Winser2022虛擬機復制成wingetmac并開機 實驗 復制文件夾并重命名 將"WinSer2022…

《人生苦短,我用python·九》python之線程池ThreadPoolExecutor的使用

Python線程池是一種管理和使用線程的高級抽象&#xff0c;使得線程的創建、分配和管理更加方便。通過線程池&#xff0c;可以避免頻繁地創建和銷毀線程&#xff0c;從而提高程序的性能。Python的concurrent.futures模塊提供了一個ThreadPoolExecutor類&#xff0c;可以方便地使…

了解并緩解 IP 欺騙攻擊

欺騙是黑客用來未經授權訪問計算機或網絡的一種網絡攻擊&#xff0c;IP 欺騙是其他欺騙方法中最常見的欺騙類型。通過 IP 欺騙&#xff0c;攻擊者可以隱藏 IP 數據包的真實來源&#xff0c;使攻擊來源難以知曉。一旦訪問網絡或設備/主機&#xff0c;網絡犯罪分子通常會挖掘其中…

1559. 二維網格圖中探測環

1559. 二維網格圖中探測環 給你一個二維字符網格數組 grid &#xff0c;大小為 m x n &#xff0c;你需要檢查 grid 中是否存在 相同值 形成的環。 一個環是一條開始和結束于同一個格子的長度 大于等于 4 的路徑。對于一個給定的格子&#xff0c;你可以移動到它上、下、左、右…

【Qt 初識】QPushButton 的詳解以及 Qt 中的坐標

文章目錄 1. Qt 中的信號槽機制 &#x1f34e;2. 通過圖形化界面的方式實現 &#x1f34e;3. 通過純代碼的方式實現按鈕版的HelloWorld &#x1f34e;4. 設置坐標 &#x1f34e; 1. Qt 中的信號槽機制 &#x1f34e; 》&#x1f427; 本質就是給按鈕的點擊操作&#xff0c;關聯…

C++之復合資料型態 第一部(參考 列舉 指標)

復合資料型態(compound type) 是由其他資料型態(data type) 定義出來的型態&#xff0c; C 中的復合資料型態包括參考(reference) 、列舉(enumeration) 、陣列(array) 、指標(pointer ) 、結構(structure) 及聯合(union) 。 參考 參考是變數(variable) 的別名(alias) &#x…

GuLi商城-商品服務-API-品牌管理-OSS獲取服務端簽名(續)

如何進行服務端簽名直傳_對象存儲(OSS)-阿里云幫助中心 gulimall-third-party服務的代碼: package com.nanjing.gulimall.thirdparty.controller;import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.utils.BinaryUtil; impor…

Linux開發:Fuse介紹

Fuse(filesystem in userspace),是一個用戶空間的文件系統。通過fuse內核模塊的支持&#xff0c;開發者只需要根據fuse提供的接口實現具體的文件操作時所對應的回調函數&#xff0c;就可以實現一個文件系統。由于其主要實現代碼位于用戶空間中&#xff0c;因此不需要重新編譯內…

實時數倉項目需求及架構設計

第2章實時數倉項目需求及架構設計 2.1 項目需求分析 1&#xff09;采集平臺 ? &#xff08;1&#xff09;用戶行為數據采集平臺搭建 ? &#xff08;2&#xff09;業務數據采集平臺搭建 2&#xff09;離線需求 … 2.2 項目框架 2.2.1 技術選型 ? 技術選型主要因素&a…

15 - matlab m_map地學繪圖工具基礎函數 - 一些數據轉換函數(二)

15 - matlab m_map地學繪圖工具基礎函數 - 一些數據轉換函數&#xff08;二&#xff09; 0. 引言1. 關于m_geodesic2. 關于mygrid_sand23. 結語 0. 引言 通過前面篇節已經將m_map繪圖工具中大多繪圖有關的函數進行過介紹&#xff0c;已經能夠滿足基本的繪圖需求&#xff0c;本節…