【Java】詳解String類中的各種方法

創建字符串

常見的創建字符串的三種方式:

// 方式一
String str = "hello world";
// 方式二
String str2 = new String("hello world");
// 方式三
char[] array = {'a', 'b', 'c'};
String str3 = new String(array);

"hello" 這樣的字符串字面值常量, 類型也是 String.
String 也是引用類型. String str = "Hello"; 這樣的代碼內存布局如下:

?

?下面我來寫一個代碼:

String str1 = "hallo";
String str2 = str1;
str1 = "world";
Systrm.out.println(str2);

很多人是否會認為 str1 的值改變了因此 str2 的值也跟著改變了,事實上 str1 里面的值并非是改變了而是指向了一個新的字符串。所以 str2 里面的值還是 hallo 。

?此時該代碼在內存中的布局是這樣的:

?判斷字符串相等

在整型中我們判斷兩個整形是否相等用的是一下的方法:

int x = 10;
int y = 10;
if(x == y){System.out.println(true);
}

但是在字符串中我們能否也用這個方法呢?

我們用代碼試試:

我們乍一看好像是可以的,但是我們換一個方法試試呢?

答案是錯誤的!

注意:?String 使用 == 比較并不是在比較字符串內容, 而是比較兩個引用是否是指向同一個對象。

Java 中要想比較字符串的內容, 必須采用String類提供的equals方法。

字符、字節與字符串

字符與字符串

將字符數組轉變為字符串

public class Test {public static void main(String[] args) {char[] array = {'a','b','c','d'};String str1 = new String(array);System.out.println(str1);String str2 = new String(array,0,2);System.out.println(str2);}
}

輸出結果:

?在將字符數組轉變為字符串時既可以將整個數組轉變為字符串也可以指定范圍。

字符串轉變為字符數組

public class Test {public static void main(String[] args) {String str = "abcdef";char[] array = str.toCharArray();for (int i = 0; i < array.length; i++) {System.out.println(array[i]);}}
}

輸出結果:

獲取字符串指定位置的字符

public class Test {public static void main(String[] args) {String str = "abcdef";char ch = str.charAt(1);System.out.println(ch);}
}

字節與字符串

將字符串轉變為字節數組

public class Test {public static void main(String[] args) throws UnsupportedEncodingException {String str = "halloworld";byte[] array = str.getBytes();for (int i = 0; i < array.length; i++) {System.out.println(array[i]);}}
}

運行結果:

字符串常見操作

字符串比較

區分大小寫的比較

public class Test {public static void main(String[] args) {String str1 = "abcd";String str2 = "abcd";if(str1.equals(str2)){System.out.println(true);}else{System.out.println(false);}}
}

?不區分大小寫的比較

public class Test {public static void main(String[] args) {String str1 = "abcd";String str2 = "AbCd";if(str1.equalsIgnoreCase(str2)){System.out.println(true);}else{System.out.println(false);}}
}

比較兩個字符串的大小

public class Test {public static void main(String[] args) {String str1 = "abcd";String str2 = "dsjkowjrd";System.out.println(str1.compareTo(str2));System.out.println(str1.compareToIgnoreCase(str2));}
}

字符串的查找

判斷一個子字符串是否存在

public class Test {public static void main(String[] args) {String str1 = "halloworld";System.out.println(str1.contains("world"));}
}

查找指定字符串的位置

public class Test {public static void main(String[] args) {String str = "halloworld";System.out.println(str.indexOf("ow"));//從開始往后查找子字符串的位置System.out.println(str.indexOf("ow",3));//從指定位置開始往后查找子字符串的位置System.out.println(str.lastIndexOf("ow"));//從后往前查找子字符串的位置System.out.println(str.lastIndexOf("ow",7));//由指定位置從后往前查找子字符串的位置}
}

查找到了則返回子字符串的起始位置,沒有查找到則返回 -1。

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

public class Test {public static void main(String[] args) {String str = "halloworld";System.out.println(str.startsWith("ha"));//從頭開始判斷字符串是否以該子字符串開頭System.out.println(str.startsWith("ll",2));//從指定位置開始判斷字符串是否以該子字符串開頭}
}

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

public class Test {public static void main(String[] args) {String str = "halloworld";System.out.println(str.endsWith("ld"));}
}

字符串替換

使用一個指定的新的字符串替換掉已有的字符串數據

public class Test {public static void main(String[] args) {String str = "halloworld";String str1 = str.replaceAll("l","ww");//替換所有的指定內容System.out.println(str1);String str2 = str.replaceFirst("l","ww");//替換第一個出現的指定內容System.out.println(str2);}
}

由于字符串是不可變對象, 替換不修改當前字符串, 而是產生一個新的字符串

字符串拆分

可以將一個完整的字符串按照指定的分隔符劃分為若干個子字符串

public class Test {public static void main(String[] args) {String str = "hallo world zhang san";String[] array = str.split(" ");//按照指定分隔符拆分成若干個子字符串for(String s : array){System.out.println(s);}String[] array1 = str.split(" ",2);//按照指定分隔符拆分成2個字符串for(String s : array1){System.out.println(s);}}
}

拆分是特別常用的操作. 一定要重點掌握. 另外有些特殊字符作為分割符可能無法正確切分, 需要加上轉義。

例如拆分IP地址:

public class Test {public static void main(String[] args) {String str = "192.166.1.1";String[] array = str.split("\\.");for(String s : array){System.out.println(s);}}
}

注意事項:
1. 字符"|","*","+"都得加上轉義字符,前面加上"\".
2. 而如果是"",那么就得寫成"\\".
3. 如果一個字符串中有多個分隔符,可以用"|"作為連字符

字符串的截取

public class Test {public static void main(String[] args) {String str = "halloworld";String str1 = str.substring(5);//從指定位置截取到最后String str2 = str.substring(0,5);//截取一個范圍的內容System.out.println(str1);System.out.println(str2);}
}

去除字符串左右空格保留中間空格

public class Test {public static void main(String[] args) {String str = "   hallo world   ";String str1 = str.trim();System.out.println(str1);}
}

字符串轉大寫

public class Test {public static void main(String[] args) {String str = "halloworld";String str1 = str.toUpperCase();System.out.println(str1);}
}

字符串轉小寫

public class Test {public static void main(String[] args) {String str = "HALLOworld";String str1 = str.toLowerCase();System.out.println(str1);}
}

字符串入池

public class Test {public static void main(String[] args) {String str = new String("halloworld").intern();}
}

字符串連接

public class Test {public static void main(String[] args) {String str = "hallo";String str1 = str.concat("world");System.out.println(str1);}
}

判斷字符串是否為空

public class Test {public static void main(String[] args) {String str = "";System.out.println(str.isEmpty());}
}

空的意思是該字符串長度為0.

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

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

相關文章

Halcon 產品周圍缺口檢測

*讀取一張圖像read_image (Image, 原圖.jpg)*獲取圖像大小get_image_size(Image, Width, Height)*關閉已經打開的窗口dev_close_window ()*打開新窗口dev_open_window(0, 0, Width, Height, black, WindowHandle) //打開指定大小的窗口*對圖像進行閾值操作threshold (Image, R…

RedHat運維-Linux網絡管理基礎2-NetworkManager與其它

1. 查看NetworkManager接管網卡狀態的命令是_______________________________&#xff1b; 2. 查看NetworkManager接管網卡狀態的命令是_______________________________&#xff1b; 3. 查看NetworkManager接管網卡狀態的命令是_______________________________&#xff1b; 4…

【鏈表】【雙指針】1、合并兩個有序鏈表+2、分隔鏈表+3、刪除鏈表的倒數第N個結點+4、鏈表的中間結點+5、合并兩個鏈表

3道中等2道簡單 數組和字符串打算告一段落&#xff0c;正好最近做的幾乎都是雙指針&#xff0c;所以今天做鏈表&#xff01; 1、合并兩個有序鏈表&#xff08;難度&#xff1a;簡單&#xff09; 該題對應力扣網址 AC代碼 思路簡單 /*** Definition for singly-linked list.…

萬和day01代碼分析

將了數據庫的多表之間的操作&#xff0c;實際應用到JDBC中去。 一共五張表&#xff0c; info存儲的是具體的信息&#xff0c;edu job role 和info都是多對一的關系。 采用的是Java FX&#xff0c;界面采用xml去編寫。 項目理解一 在JavaFX中&#xff0c;ObservableList 是一個…

SCI一區TOP|準隨機分形搜索算法(QRFS)原理及實現【免費獲取Matlab代碼】

目錄 1.背景2.算法原理2.1算法思想2.2算法過程 3.結果展示4.參考文獻5.代碼獲取 1.背景 2024年&#xff0c;LA Beltran受到分形幾何、低差異序列啟發&#xff0c;提出了準隨機分形搜索算法&#xff08;Quasi-random Fractal Search, QRFS&#xff09;。 2.算法原理 2.1算法思…

【網絡安全】實驗三(基于Windows部署CA)

一、配置環境 打開兩臺虛擬機&#xff0c;并參照下圖&#xff0c;搭建網絡拓撲環境&#xff0c;要求兩臺虛擬的IP地址要按照圖中的標識進行設置&#xff0c;并根據搭建完成情況&#xff0c;勾選對應選項。注&#xff1a;此處的學號本人學號的最后兩位數字&#xff0c;1學號100…

Linux 搭建 Kafka 環境 - 詳細教程

目錄 一. Kafka介紹 1. 應用場景 2. 版本對比 二. Kafka安裝 1. 前置環境 &#xff08;1&#xff09;安裝JDK 2. 軟件安裝 &#xff08;3&#xff09;環境變量配置 &#xff08;3&#xff09;服務啟動 三. Console測試 基礎命令 &#xff08;1&#xff09;列出Kafk…

【c++刷題筆記-貪心】day30:56. 合并區間 、 738.單調遞增的數字

56. 合并區間 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;覆蓋區間問題&#xff0c;先排序再判斷邊界 重點&#xff1a;二維數組可以使用back&#xff08;&#xff09;函數直接更換邊界值 class Solution { public:static bool cmp(const vector<int>&a…

上網監控軟件有哪些?3款實力出眾的上網監控軟件

為什么需要上網監控軟件&#xff1f; 據說&#xff0c;99%的員工上班都會摸魚&#xff0c;1%的員工上班會竊取公司信息。 所以&#xff0c;因此&#xff0c;監控員工的上網行為是很有必要滴。 總結下來&#xff0c;上網監控軟件的作用是&#xff1a; 1.提高生產力&#xff1…

天線罩作用

天線罩是安裝在天線上的一個保護性結構&#xff0c;基本作用如下&#xff1a; 1.保護天線&#xff1a;天線罩可以保護天線免受外界環境的影響&#xff0c;如雨、雪、風、沙塵等&#xff0c;延長天線的使用壽命。 2.減少損傷&#xff1a;在天線遭受外力撞擊時&#xff0c;天線…

前端位置布局匯總

HTML中脫離文檔流的元素有&#xff1a; position: absolute - 元素相對于最近的已定位&#xff08;非 static&#xff09;祖先元素定位。 position: fixed - 元素相對于瀏覽器窗口定位。 float: left 或 float: right - 元素向左或向右浮動&#xff0c;周圍的內容會環繞它。 …

shark云原生-日志體系-filebeat高級配置(適用于生產)-更新中

文章目錄 1. filebeat.inputs 靜態日志收集器2. filebeat.autodiscover 自動發現2.1. autodiscover 和 inputs2.2. 如何配置生效2.3. Providers 提供者2.4. Providers kubernetes2.5. 配置 templates2.5.1. kubernetes 自動發現事件中的變量字段2.5.2 配置 templates 2.6. 基于…

深度學習全景進階:最新Python深度學習進階與前沿應用

查看原文>>>深度學習全景進階&#xff1a;最新Python深度學習進階與前沿應用 近年來&#xff0c;伴隨著以卷積神經網絡&#xff08;CNN&#xff09;為代表的深度學習的快速發展&#xff0c;人工智能邁入了第三次發展浪潮&#xff0c;AI技術在各個領域中的應用越來越廣…

IDEA發瘋導致maven下載回來的jar不完整zip END header not found

IDEA發瘋導致maven下載回來的jar不完整zip END header not found 具體報錯 java: 讀取D:\mavenRepository\com\alibaba\druid-spring-boot-starter\1.2.23\druid-spring-boot-starter-1.2.23.jar時出錯; zip END header not foundjava: java.lang.RuntimeException: java.io.…

2024 JuniorCryptCTF reppc 部分wp

Random cipher 文本編輯器打開附件 比較簡單。腳本 Mutated Caesar 文本編輯器打開附件 比較簡單。腳本 Pizza 附件拖入dnSpy 比較簡單。腳本 l33t Leet&#xff0c;又稱黑客語&#xff0c;是指一種發源于歐美地區的BBS、線上游戲和黑客社群所使用的文字書寫方式&#xff0c;通…

Linux:進程終止和進程替換

Linux&#xff1a;Linux&#xff1a;進程終止和進程替換 一、進程終止1.1 進程退出場景和創建退出方式 1.2 exit 和 _exit區別二、進程程序替換2.1 進程替換函數2.2 函數解釋及命名解釋函數解釋命名解釋 2.3 單進程程序替換&#xff08;無子進程&#xff09;2.3.1 帶l函數進程替…

ArduPilot開源飛控之AP_VisualOdom

ArduPilot開源飛控之AP_VisualOdom 1. 源由2. 類定義2.1 類與構造函數2.2 枚舉類型2.3 公共方法2.4 消息處理2.5 其他功能2.6 私有成員 3. 框架設計3.1 啟動代碼 AP_VisualOdom::init3.2 消息處理3.2.1 AP_VisualOdom::handle_vision_position_delta_msg3.2.2 AP_VisualOdom::h…

買的Google賬號登錄,修改輔助郵箱收不到驗證碼?可能是個簡單的錯誤

這篇文章分享一個案例&#xff0c;購買了谷歌賬號以后如何修改輔助郵箱&#xff0c;修改輔助郵箱的一些要點&#xff0c;以及常見的一個錯誤。 一、案例回放 這個朋友昨天在我的一個視頻下面留言說買了谷歌賬號以后&#xff0c;想修改輔助郵箱地址&#xff0c;但是輸入了輔助…

中英雙語介紹加拿大多倫多(Toronto)

中文版 多倫多概述 多倫多&#xff08;Toronto&#xff09;是加拿大最大的城市&#xff0c;也是北美地區重要的經濟、文化和金融中心。以下是對多倫多的詳細介紹&#xff0c;包括其經濟地位、金融中心、人口、地理位置、高等教育、移民政策、著名景點和居住的名人等方面的信息…

【Git】本地版本控制

Git 是一個分布式版本控制系統&#xff0c;用于跟蹤文件的更改&#xff0c;通常用于源代碼管理。它的設計目的是為了協同工作和版本管理&#xff0c;讓多個開發人員能夠高效地合作開發和維護代碼。 Git環境配置 在官網可以找到對應下載&#xff1a;Git - Downloads (git-scm.c…