【java学习】常用实体类--String、StringBuffer\StringTokenizer
文章目錄
- 參數傳遞
- String
- String類有兩個常用構造方法:
- 引用String常量
- String類的常用方法
- StringBuffer和StringBuilder
- StringBuilder中實現插入、刪除和替換等操作的常用方法說明如下:
- StringTokenizer
參數傳遞
基本數據類型:值傳遞
引用數據類型:引用本身無法被改變,而引用指向的對象內容可以被改變
如:
String
在java.lang包中,且為final類,即不可以被拓展,沒有子類。
1.String常量也是對象,用雙引號括起來的字符序列,Java把用戶程序中的String常量放入常量池。常量池中的數據在程序運行期間不允許被改變。凡new構造出的對象都不在常量池中。
Java中的引用有點像c++中的指針,通過引用可以對堆中的對象進行操作。在java程序中,最常見的引用類型是強引用,當使用new創建一個新對象并將其賦值給一個變量的時候,這個變量就成為指向該對象的一個強引用
如:String s = new String(“hi”)
String t = new String(“hi”)
二者的實體雖然相同,但二者的引用不同,即s==t的值是false.(使用new后,每次都要開辟新天地)
另外,用戶無法輸出String對象的引用:
輸入System.out.printIn(s)
結果:
String類有兩個常用構造方法:
(1)char a[]={‘j’,‘a’,‘v’,‘a’};
String s = new String(a);
用一個字符數組創建一個String對象
(2)String(char a[],int start,int count)
提取字符數組a中的一部分創建一個String對象
引用String常量
可以把String常量的引用賦給一個String對象,例如:
String s1,s2;
s1=“你好”;
s2=“你好”;
s1==s2返回true. s1,s2具有相同的引用。
"String testOne=“你”+“好”;“的賦值號的右邊是兩個常量進行并置運算,因此結果是常量池中的常量"你好”(常量優化技術:
常量折疊是一種Java編譯器使用的優化技術,Java,Sti0《testOne=“你”+“好,被編譯器優化為
Stxing testOne=“你好”,就像intx=1+2被優化為ntx=3樣),所以,表達式"你好”
testOne和表達式 hello=testOne的值都是true。對象 testOn中存放著引用12AB, testOne的實體中存放著字符序列"你好":
"testTwo=you+hi;“的賦值號的
右邊有變量,例如變量you參與了并置運算,那么you+hi相當于"new String(你好);”,因此結果在動態區誕生新對象, testTwo存放著引用BCD5, test Two的實體中存放著字符序列“你
好”,所以表達式hello==testTwo的結果是 false
如圖:
String類的常用方法
1.valueOf() //將其他數據類型轉化為字符串對象,參數可以是除byte以外的任何數據類型。
2.charAt(int index);//指定參數位置的字符
3.boolean startsWith(String str,inr offset) //判斷調用字符串在位置offset處開始是否以子串str開頭
boolean endsWith(String str) 是否以str結尾
4.int indexOf()和int lastIndexOf():返回調用字符串對象中指定的字符或者子串首次出現的位置/最后一次出現的位置,未找到返回-1
如int indexOf(int ch) (有多個重載函數)
5.取子串方法:substring()
String substring(int beginIndex)
String substring(int beginIndex,int endIndex)
6.boolean equals(Object anotherObject):字符串相等性比較(區分大小寫)
boolean equalsIgnore(String string)字符串相等性比較(不區分大小寫)
int conpareTo(String string);//字符串大小比較(區分大小寫)
int conpareToIgnore(String string);//字符串大小比較(不區分大小寫)
7.String concat(String str);//將str連接到后面
8.replace()替換
9.String trim()去掉前后空白
strip();去掉首位空格isBlank();//判斷是否字符串空白
10.boolean contain(String s)
是否包含參數s的字符序列
StringBuffer和StringBuilder
Java提供了兩個可變字符串類StringBuffer和StringBuilder,中文翻譯為“字符串緩沖區”。
StringBuffer是線程安全的,它的方法是支持線程同步,線程同步會操作串行順序執行,在單線程環境下會影響效率。StringBuilder是StringBuffer單線程版本,Java 5之后發布的,它不是線程安全的,但它的執行效率很高。
StringBuilder的中構造方法有4個:
StringBuilder():創建字符串內容是空的StringBuilder對象,初始容量默認為16個字符。
StringBuilder(CharSequence seq):指定CharSequence字符串創建StringBuilder對象。CharSequence接口類型,它的實現類有:String、StringBuffer和StringBuilder等,所以參數seq可以是String、StringBuffer和StringBuilder等類型。
StringBuilder(int capacity):創建字符串內容是空的StringBuilder對象,初始容量由參數capacity指定的。
StringBuilder(String str):指定String字符串創建StringBuilder對象。
StringBuilder中實現插入、刪除和替換等操作的常用方法說明如下:
2 .StringBuffer delete(int start, int end):在字符串緩沖區中刪除子字符串,要刪除的子字符串從指定索引start開始直到索引end - 1處的字符。start和end兩個參數與substring(int beginIndex, int endIndex)方法中的兩個參數含義一樣。
3.StringBuffer replace(int start, int end, String str)字符串緩沖區中用str替換子字符串,子字符串從指定索引start開始直到索引end - 1處的字符。start和end同delete(int start, int end)方法。
以上介紹的方法雖然是StringBuilder方法,但StringBuffer也完全一樣
StringTokenizer
和 split()方法不同的是,StringTokenizer 對象不使用正則表達式作分隔標記。有時需要分析 String 對象的字符序列并將字符序列分解成可被獨立使用的單詞,這些單詞叫作語言符號。例如,對"You are welcome",如果把空格作為分隔標記,那么“ You are welcome”就有三個單詞(語言符號);而對于“ You,are,welcome",如果把逗號作為分隔標記,那么“ You,are,welcome”有三個單詞。
當分析—個 String 對象的字符序列并將字符序列分解成可被獨立使用的單詞時,可以使用 java.util 包中的 StringTokenizer 類,該類有兩個常用的構造方法。
? StringTokenizer(String s):為 Strin g 對象s 構造一個分析器。使用默認的分隔標記,即空格符、換行符、回車符、Tab 符、進紙符做分隔標記。
? StringTokenizer(String s, String delim):為 String 對象s 構造一個分析器。參數 delim 的字符序列中的字符的任意排列被作為分隔標記。
例如:
StringTokeni zerStringTokenizer fenxi = new StringTokenizer
(" you#*are welcome " ) ;
稱—個StringTokenizer 對象為—個字符串分析器。一個分析器可以使用nextToken()方法逐個獲取 String 對象的字符序列中的語言符號(單詞)。每當調用 nextToken(時,都將在 String對象的字符序列中獲得下一個語言符號。每當獲取到一個語言符號,字符串分析器中負責計數的變量的值就自動減 1, 該計數變量的初始值等于字符串中的單詞數目。
通常用 while 循環來逐個獲取語言符號,
總結
以上是生活随笔為你收集整理的【java学习】常用实体类--String、StringBuffer\StringTokenizer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【flask学习笔记】flask与HTT
- 下一篇: 【flask整合深度学习】ubuntu系