国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - JAVA基礎(chǔ)類庫之String類,StringBuffer類和StringBuilder類

JAVA基礎(chǔ)類庫之String類,StringBuffer類和StringBuilder類

2022-01-12 10:51YXXYX Java教程

這篇文章主要介紹了Java中基礎(chǔ)類庫的String類,StringBuffer類和StringBuilder類,是Java入門學習中的基礎(chǔ)知識,需要的朋友可以參考下

引言

字符串就是一連串的字符序列,Java提供了String、StringBuffer和StringBuilder三個類來封裝對字符串,并提供了系列方法來操作字符串對象。

  • String類是不可變類的;
  • StringBuffer對象則代表一個字符序列可變的字符串,當一個StringBuffer被創(chuàng)建以后,通過StringBuffer提供的append、insert、reverse、setCharAt、setLength等方法可以改變這個字符串對象的字符序列;一旦通過StringBuffer生成了最終想要的字符串,就可以調(diào)用它的toString方法將其轉(zhuǎn)換為一個String對象,使其不可變;
  • JDK1.5又新增了一個StringBuilder類,它也代表了字符串對象,StringBuffer和StringBuilder基本相同,構(gòu)造器和方法也一樣,不同點是:StringBuffer是線程安全的,StringBuilder是線程不安全的,但是性能更高;所以通常情況下,創(chuàng)建一個內(nèi)容可變的字符串,應(yīng)優(yōu)先選擇StringBuilder類;

下面分別介紹一下這三種字符串類的一些常用方法(StringBuffer和StringBuilder方法基本相同,一起介紹了)

String類

這里還是簡單說一下為什么String類不能修改吧;

簡單來說,因為String類的使用頻率太大了,為了進一步提高效率,String類所聲明的字符串都會保存到常量池中,這樣用哪個字符串直接取出來就可以了;

其實就記住不管怎樣String類字符串就存放在常量池中;

舉個例子:

?
1
2
String s1 = new String("Hello");
String s2 = "World" + s1;

能看出來創(chuàng)建了幾個對象嗎?

答案是三個;一個Hello,一個World,一個HelloWorld;先是Hello存放到了常量池中,然后World又進去,最后它倆組合形成新的字符串HelloWorld又放了進去;

如果理解不了,那么就記住一點:String類字符串一旦創(chuàng)建不可變。

String類構(gòu)造方法 

  • String s = "abc";
  • String s = new String("abc");
  • String s = new String(byte數(shù)組);
  • String s = new String(byte數(shù)組, 起始下標, 長度);
  • String s = new String(char數(shù)組);
  • String s = new String(char數(shù)組, 起始下標, 長度);

記住這幾種就可以了;

String常用方法:

簡單介紹的方法

 length

作用:返回字符串長度

比較簡單,就不詳細介紹了,出現(xiàn)頻率非常高

注意:數(shù)組里面的length是屬性,這里的length()是方法;

isEmpty

作用:判斷字符串是否為空字符串;

空字符串返回true,否則返回false

注意:判斷的是空字符串""(即length()為0),而不是null,如果是null會造成空指針異常;

詳細介紹的方法

 contians

作用:判斷前面的字符串是否包含后面的字符串

格式:public boolean contains?(CharSequence s)

參數(shù) :s - 搜索的順序 (CharSequence是一個接口,String類已實現(xiàn),所以可以傳入一個字符串)

結(jié)果 :如果此字符串包含 s , 則為 true,否則為 false

例如:

?
1
2
System.out.println("HelloWorld".contains("World")); // 輸出true
System.out.println("HelloWorld".contains("Java")); // 輸出false

endsWith

作用:判斷當前字符串是否以某個字符串結(jié)尾

格式:public boolean endsWith?(String suffix)

參數(shù):suffix - 后綴

結(jié)果:如果當前字符串以suffix結(jié)尾,為true,否則為false

例如:

?
1
2
System.out.println("Java.txt".endsWith("Java")); // 輸出false
System.out.println("Java.txt".endsWith(".txt")); // 輸出true

startsWith

作用:判斷當前字符串是否以某個字符串開始

格式:public boolean startsWith?(String suffix)

參數(shù):suffix - 前綴

結(jié)果:如果當前字符串以suffix開始,為true,否則為false

例如:

?
1
2
System.out.println("Java.txt".startsWith("Java")); // 輸出true
System.out.println("Java.txt".startsWith(".txt")); // 輸出false

equalsIgnoreCase

作用:判斷兩個字符串是否相等,判斷時忽略大小寫

格式:public boolean equalsIgnoreCase?(String anotherString)

參數(shù):anotherString - String

結(jié)果:如果兩個字符串忽略大小寫的情況下相等,返回true,否則為false

例如:

?
1
2
System.out.println("ABc".equalsIgnoreCase("abC")); // true
System.out.println("aABc".equalsIgnoreCase("abC")); // false

其實這個功能很常見,就比如我們輸入驗證碼時有些情況就自動忽略了你輸入字母的大小寫;

getBytes

作用:將字符串對象轉(zhuǎn)換為字節(jié)數(shù)組(字符對應(yīng)的Ascii碼數(shù)組)

格式:public byte[] getBytes?(String charsetName)

參數(shù):charsetName - String

結(jié)果:返回一個byte[]數(shù)組,對應(yīng)每個字符的Ascii碼

例如:

?
1
2
byte[] b = "abcde".getBytes();
for (var i : b) System.out.print(i + " "); // 輸出:97 98 99 100 101

indexOf

作用:返回某個字符串在當前字符串中第一次出現(xiàn)處的下標

格式:public int indexOf?(String str)

參數(shù):str - 要搜索的子字符串

結(jié)果:返回指定子字符串的首次出現(xiàn)的索引,如果沒有這種情況返回 -1

例如:

?
1
2
System.out.println("HelloWorld".indexOf("llo")); // 輸出:2
System.out.println("HelloWorld".indexOf("ol")); // 輸出:-1

lastIndexOf

作用:返回某個字符串在當前字符串中最后一次出現(xiàn)處的下標

格式:public int lastIndexOf(String str)

參數(shù):str - 要搜索的子字符串

結(jié)果:返回指定子字符串的最后一次出現(xiàn)的索引,如果沒有這種情況返回 -1

例如:

?
1
2
System.out.println("HelloWorld".lastIndexOf("l")); // 輸出:8
System.out.println("HelloWorld".lastIndexOf("ol")); // 輸出:-1

replace

作用:將某字符串與目標序列匹配的字符串替換為指定的字符串,替換從字符串開始到結(jié)束

格式:public String replace?(CharSequence target, CharSequence replacement)

參數(shù):target - 要替換子串 replacement -指定的子符串

結(jié)果:生成的替換后的字符串

例如:

?
1
2
3
String s = "Hello World World".replace("World", "Java");
System.out.println(s);
// 輸出:Hello Java Java

split

作用:將字符串拆分

格式:public String[] split?(String regex)

參數(shù):regex - 分隔正則表達式 (同樣可以通過字符串進行拆分,這里先用字符串作為案例)

結(jié)果:拆分后字符串存入的數(shù)組

例如:

?
1
2
3
4
5
6
7
8
String[] s = "year:2021-month:09-day:15-time:23:30".split("-"); // 以字符串"-"進行拆分;
for (var i : s) System.out.println(i);
/* 輸出:
year:2021
month:09
day:15
time:23:30
*/

substring(一個參數(shù))

作用:返回一個字符串,該字符串是此字符串的子串; 子字符串以指定索引beginIndex的字符開始,并擴展到此字符串的末尾;

格式:public String substring?(int beginIndex)

參數(shù):beginIndex - 包含起始索引

結(jié)果:截取后的子字符串

例如:

?
1
2
3
String s = "Today is a good day!";
System.out.println(s.substring(9));
// 輸出:a good day!

substring(兩個參數(shù))

作用:返回一個字符串,該字符串是此字符串的子串;子串從指定的beginIndex開始,并擴展到索引號為endIndex - 1的字符 ;

格式:public String substring?(int beginIndex, int endIndex)

參數(shù):beginIndex - 開始索引(包括) endIndex - 結(jié)束索引(不包括) // 左閉右開

結(jié)果:截取后的子字符串

例如:

?
1
2
3
String s = "Today is a good day!";
System.out.println(s.substring(9, 15));
// 輸出:a good

toCharArray

作用:將字符串轉(zhuǎn)化為一個字符串數(shù)組

格式:public char[] toCharArray?()

參數(shù):無參數(shù)

結(jié)果:返回對應(yīng)字符串的數(shù)組

例如:

?
1
2
3
char[] s = "Today is a good day!".toCharArray();
for (var i : s) System.out.print(i + " ");
// 輸出:T o d a y   i s   a   g o o d   d a y !

toLowerCase

作用:將此String所有字符轉(zhuǎn)換為小寫,使用默認語言環(huán)境的規(guī)則

格式:public String toLowerCase?()

參數(shù):無參數(shù)

結(jié)果:返回轉(zhuǎn)為小寫的字符串

例如:

?
1
2
System.out.println("HELLOWORLD".toLowerCase());
// 輸出:helloworld

toUpperCase

作用:將此String所有字符轉(zhuǎn)換為大寫,使用默認語言環(huán)境的規(guī)則

格式:public String toUpperCase?()

參數(shù):無參數(shù)

結(jié)果:返回轉(zhuǎn)為大寫的字符串

例如:

?
1
2
System.out.println("helloworld".toUpperCase());
// 輸出:HELLOWORLD

trim

作用:去除字符串前后空格

格式:public String trim?()

參數(shù):無

結(jié)果:返回去除空格后的字符串

例如:

?
1
2
System.out.println("    hello      world    ".trim());
// 輸出:hello      world

有時候你要使用搜索引擎搜索時,如果前面多打了幾個空格,并不影響結(jié)果;或者有的賬號登錄會忽略開始和結(jié)束的空格,都會用到這個方法;

valueOf

作用:將任何非字符串轉(zhuǎn)化為字符串

格式:public static String valueOf?(一些變量)

參數(shù):參數(shù)可以是int,double等基本數(shù)據(jù)類型,也可以是Object等引用數(shù)據(jù)類型

結(jié)果:返回轉(zhuǎn)化后的字符串

例如:

?
1
2
3
4
5
6
System.out.println(String.valueOf(1234)); // 1234
System.out.println(String.valueOf(3.14159)); // 3.14159
System.out.println(String.valueOf(true)); // true
char[] s = new char[] {'a', 'b', 'c'};
System.out.println(String.valueOf(s)); // abc
System.out.println(String.valueOf(new Object())); // java.lang.Object@776ec8df

這里需要說一下,valueOf使用是非常廣泛的;我們可以看到最后一個案例,輸出一個對象:new Object(),結(jié)果是它的地址以及位置信息等,是不是和 toString() 方法特別像?其實當傳入vauleOf一個對象時,vauleOf對應(yīng)的源碼里就調(diào)用了toString()方法,所以才會輸出一樣的結(jié)果;所以說,如果我們重寫了toString方法,就會調(diào)用我們重寫的toString,輸出對應(yīng)信息;

還有,當我們用 System.out.println()輸出的時候,如果傳入的是對象,系統(tǒng)會默認調(diào)用toString,這是什么原因?調(diào)用println源碼可以發(fā)現(xiàn),每一個重載版本的println都會調(diào)用valueOf,所以如果println傳入一個對象的話,就會調(diào)用valueOf方法,因為valueOf方法中有toString方法,所以就默認調(diào)用了toString方法,將對象轉(zhuǎn)化為字符串輸出;

剛才說了一點:每一個重載版本的println都會調(diào)用valueOf,當然也包括了基本數(shù)據(jù)類型,就以boolean例,看看它的源碼;

JAVA基礎(chǔ)類庫之String類,StringBuffer類和StringBuilder類

可以看到boolean的println會調(diào)用 valueOf 的,其實其他基本數(shù)據(jù)類型也差不多,傳入println后都會調(diào)用 valueOf ,所以可以得出結(jié)論:println輸出的總是一個字符串;

StringBuffer/StringBuilder常用方法

一些總結(jié):

  • StringBuffer/StringBuilder可以看做可變長度字符串。
  • StringBuffer/StringBuilder初始化容量16.
  • StringBuffer是線程安全的。StringBuilder是非線程安全的。
  • 頻繁進行字符串拼接不建議使用“+”,對運行效率有影響;

下面就以StringBuffer為例,StringBuilder也是一樣;

StringBuffer類構(gòu)造方法 

  • StringBuffer?()
  • StringBuffer?(int capacity指定初始化容量)
  • StringBuffer?(CharSequence seq)
  • StringBuffer?(String str) 

StringBuffer常用方法:

 append

作用:將傳入的數(shù)據(jù)追加在字符串后面

格式:public StringBuffer append(可以是int,char,String等)

參數(shù):int,char,String等

結(jié)果:組合后形成的新的字符串

capacity

作用:返回當前容量

格式:public int capacity?()

參數(shù):無

結(jié)果:當前字符串的容量(和長度length()不同)

delete

作用:刪除字符串從 start 起始索引到 end-1 終止索引間的字符串;

格式:public StringBuffer delete?(int start,int end)

參數(shù):start - 開始索引 end - 結(jié)束索引(左閉右開)

結(jié)果:刪除后的字符串

insert

作用:在字符串序列中插入對應(yīng)數(shù)據(jù)

格式:public StringBuffer insert?(一些參數(shù))

參數(shù):一般第一個參數(shù)是插入位置int ,第二個是插入內(nèi)容:可以是char[],String,還有基本數(shù)據(jù)類型等;

結(jié)果:插入后的字符串

replace

作用:替換指定位置的指定字符串

格式:public StringBuffer replace?(int start, int end,String str)

參數(shù):start - 開始索引 end - 結(jié)束索引 (左閉右開)str - 將替換的字符串。

結(jié)果:替換后的新的字符串

總結(jié)

這里只是簡單介紹了一下String類 、StringBuffer類和StringBuilder類,對它們的常用方法也是有了一個簡單的介紹,但是這也是很少的一部分,只是混個眼熟;所以實際開發(fā)過程中要會用JDK API幫助文檔,因為Java所有的方法和類你不可能全部都記住或者見過,所以一定要會用工具;

對于一些方法很簡單,可能會覺得沒有必要,但是既然有這個方法,那么肯定是有存在意義的;在實際開發(fā)中,這些方法不僅能提高你代碼的可讀性,還會減少你的代碼量,所以都要有了解;

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!

原文鏈接:https://blog.csdn.net/YXXXYX/article/details/120313081

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發(fā)現(xiàn)了對于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現(xiàn)搶紅包功能

    Java實現(xiàn)搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現(xiàn)搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經(jīng)有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現(xiàn)好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發(fā)項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久久一 | av网站观看 | 日本天天操 | 一级片黄色大片 | www.亚洲黄色 | 国产精品久久久久久久久久新婚 | 日韩精品一区二区三区在线 | 日韩欧美在线观看 | 亚洲一区视频 | 亚洲欧洲精品成人久久奇米网 | 久久手机免费视频 | av网站在线播放 | 黄色片视频在线播放 | 午夜伦理影院 | 一区二区三区在线看 | 精品久久一区 | 波多野结衣一二三 | 欧美日韩中文 | 亚洲人成网站b2k3cm | 久久se精品一区精品二区 | 亚洲欧美视频 | 成人亚洲一区 | 欧美成年黄网站色视频 | 懂色aⅴ精品一区二区三区蜜月 | 免费成人在线电影 | 少妇精品久久久久久久久久 | 亚洲免费成人在线 | 激情久久av一区av二区av三区 | 亚洲一卡二卡 | 任你躁久久久久久妇女av | 亚洲国产婷婷香蕉久久久久久99 | 综合激情网 | 国产欧美综合一区二区三区 | 中文字幕最新在线 | 欧美日韩三级 | 欧美成人精精品一区二区频 | 成人亚洲天堂 | 国产一级在线观看 | 国产精品资源在线观看 | 一区二区三区精品 | www久 |