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