java學(xué)習(xí)指南之字符串與正則表達(dá)式
String
含義:String是一個封裝char[]數(shù)組的對象,字符串不可變
String str = “abc”; 等效于:char[] data = {‘a’, ‘b’, ‘c’};
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence 注意:
- String類被final修飾所以String類不能被繼承
- 所處的包為java.lang,使用時無需導(dǎo)包
- 字符串一旦創(chuàng)建,長度不可改變
構(gòu)造方法
String(char[] value,int m,int n):截取value數(shù)組從下標(biāo)m開始,截取n個字符形成字符串
String(char[] value):將字符數(shù)組轉(zhuǎn)化為字符串
String(bytes[] bytes):使用平臺默認(rèn)字符集解碼指定字節(jié)數(shù)組,形成一個字符串
String(bytes[] bytes,String charsetname):使用指定字符集解碼指定字節(jié)數(shù)組,形成一個字符串
String(bytes[] bytes,int m,int n,String charsetname):使用指定字符集解碼指定字節(jié)數(shù)組,并從下標(biāo)m處截取字節(jié),截取n個最終形成一個字符串
方式二:String str="abc";
注意
方式二的創(chuàng)建方式如果是第一次使用字符串,java會在字符串堆中常量池創(chuàng)建一個對象;其他方式相當(dāng)于直接創(chuàng)建一個對象,若常量池中沒有則也會在常量池中創(chuàng)建一個再次使用相同的內(nèi)容時,會直接訪問堆中常量池中存在的對象。
格式控制字符串
String a="我";
String b="蛋糕";
String name=String.format("%s喜歡%s", a,b);
System.out.println(name);//字符串可以直接打印常用方法
int hashCode()
返回此字符串的哈希碼。
boolean equals(Object anObject)
將此字符串與指定的對象比較,比較的是重寫后的串的具體內(nèi)容
String toString()
返回此對象本身(它已經(jīng)是一個字符串?。?nbsp;
int length()
返回此字符串的長度。
String toUpperCase()
所有字符都轉(zhuǎn)換為大寫。
String toLowerCase()
所有字符都轉(zhuǎn)換為小寫
boolean startsWith(String prefix)
測試此字符串是否以指定的元素開頭。
boolean endsWith(String suffix)
測試此字符串是否以指定的字符串結(jié)束。
char charAt(int index)
返回指定索引/下標(biāo)處的 char 值/字符
int indexOf(String str)
返回指定字符在此字符串中第一次出現(xiàn)處的索引。
int lastIndexOf(String str)
返回指定字符在此字符串中最后一次出現(xiàn)處的索引。
String concat(String str)
將指定字符串連接/拼接到此字符串的結(jié)尾,注意:不會改變原串
String[] split(String regex)
根據(jù)給定元素來分隔此字符串。
String trim()
返回去除首尾空格的字符串
String replace(CharSequence target, CharSequence replacement)
用新字符串replacement替換掉原有的舊的字符串target
byte[] getBytes()
把字符串存儲到一個新的 byte 數(shù)組中
String substring(int beginIndex)
返回一個新子串,從指定下標(biāo)處開始,包含指定下標(biāo)
String substring(int beginIndex, int endIndex)
返回一個新子串,從執(zhí)定下標(biāo)開始,到結(jié)束下標(biāo)為止,但不包含結(jié)束下標(biāo)
static String valueOf(int i)
把int轉(zhuǎn)成String
char[] toCharArray()
將字符串轉(zhuǎn)成字符數(shù)組
StringBuilder與StringBuffer
特點
- 封裝了char[]數(shù)組
- 是可變的字符序列
- 提供了一組通用的可以對字符內(nèi)容修改的方法
- 常用append()來代替字符串做字符串連接”+”
- 內(nèi)部字符數(shù)組默認(rèn)初始容量是16:super(str.length() + 16);
- 如果大于16會嘗試將擴容,新數(shù)組大小原來的變成2倍+2,容量如果還不夠,直接擴充到需要的容量大小。int newCapacity = value.length * 2 + 2;
- StringBuffer 1.0出道線程安全,StringBuilder1.5出道線程不安全
- StringBuffer方法里面有同步關(guān)鍵字,StringBuilder里沒有
- 在執(zhí)行效率上,StringBuilder > StringBuffer > String
理解可變與不可變
- 不可變:在地址不變的情況下,想讓字符串?dāng)U容是不可能的
- 可變:在stringBuilder/stringbuffer這個對象地址不變的情況下,想讓字符串?dāng)U容是可能的,直接追加即可
字符串拼接方法
語法:字符串.append(字符串);
返回值:原字符串
String s = "hello world";
StringBuffer s1 = new StringBuffer();
StringBuffer append = s1.append(s);
System.out.println(s1);//hello world
System.out.println(s1==append);//true字符串刪除方法
語法:字符串.delete(索引1,索引2)
作用:刪除[索引1,索引2)之間所有的字符
返回值:原字符串
StringBuilder s1 = new StringBuilder("hello world");
StringBuilder delete = s1.delete(3, 6);
System.out.println(delete);
System.out.println(s1==delete);//true字符串內(nèi)插入字符
語法:字符串.insert(索引,字符串)
作用:在指定索引的前面追加字符
返回值:原字符串
StringBuffer s1 = new StringBuffer("hello");
StringBuilder s2=new StringBuilder("world");
StringBuffer s = s1.insert(1, "ab");
s2.insert(5, "cd");//在末尾處追加字符串,如果索引為6則報錯
System.out.println(s1);//habello
System.out.println(s1==s);//true
System.out.println(s2);//worldcd字符串替換方法
語法:字符串.replace(索引1,索引2,str字符串)
作用:將字符串內(nèi)[索引1,索引2)內(nèi)所有字符由str字符串替換
返回值:原字符串
StringBuilder s1 = new StringBuilder("hello world");
StringBuilder s2 = s1.replace(3, 6, "no");
System.out.println(s2);
System.out.println(s1==s2);//true字符串反轉(zhuǎn)方法
語法:字符串.reverse()
返回值:原字符串
StringBuffer s1 = new StringBuffer("abc");
StringBuffer reverse = s1.reverse();
System.out.println(s1);//cba
System.out.println(s1==reverse);//true查字符串對應(yīng)索引處的字符
語法:字符串.charAt(索引)
返回值:對應(yīng)索引處的字符
StringBuffer s1 = new StringBuffer("hello world");
char c = s1.charAt(6);
System.out.println(c);截取字符串
語法:字符串.substring(索引1,索引2)
返回值:字符串[索引1,索引2)內(nèi)字符組成的字符串
StringBuffer s1 = new StringBuffer("hello world");
String substring = s1.substring(2, 5);
System.out.println(substring);正則表達(dá)式
含義:正確字符串的格式,常用來判斷用戶輸入的內(nèi)容是否符合格式的要求,注意是嚴(yán)格區(qū)分大小寫的。
注意:java字符串正則嚴(yán)格按照順序匹配
正則表達(dá)式符號表

正則表達(dá)式常用方法
Matches()
語法:字符串.Matches(正則)
作用:判斷當(dāng)前字符串是否匹配正則表達(dá)式,若符合則返回true,否則返回false
返回值:boolean
//身份證號的規(guī)律:一共是18位,前17位是數(shù)子,第18位有可能是數(shù)字,也有可能是X
String regex = "\\d{17}[0-9X]";
System.out.println("請輸入您的身份證號");
String s = new Scanner(System.in).nextLine();
boolean matches = s.matches(regex);
System.out.println(matches);replaceAll()
語法:字符串.replaceAll(正則,子串)
作用:將字符串內(nèi)符合正則的內(nèi)容用字串代替
返回值:替換好的字符串
String regex = "\\d[0-9X]";
String s = "he1Xo";
String s1 = s.replaceAll(regex, "ll");
System.out.println(s1);split()
語法:字符串.split(正則)
作用:以字符串內(nèi)符合正則表達(dá)式的內(nèi)容來拆分字符串
返回值:拆分好的字符串?dāng)?shù)組
String regex = "\\d[0-9X]";
String s = "abc23def0Xghi";
String[] split = s.split(regex);
System.out.println(Arrays.toString(split));//[abc, def, ghi]總結(jié)
到此這篇關(guān)于java學(xué)習(xí)指南之字符串與正則表達(dá)式的文章就介紹到這了,更多相關(guān)java字符串與正則表達(dá)式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot+Mybatis項目使用Redis做Mybatis的二級緩存的方法
本篇文章主要介紹了SpringBoot+Mybatis項目使用Redis做Mybatis的二級緩存的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
SpringMVC自定義類型轉(zhuǎn)換器實現(xiàn)解析
這篇文章主要介紹了SpringMVC自定義類型轉(zhuǎn)換器實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12
Eureka源碼閱讀解析Server服務(wù)端啟動流程實例
這篇文章主要為大家介紹了Eureka源碼閱讀解析Server服務(wù)端啟動流程實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
java?-jar命令及SpringBoot通過java?-jav啟動項目的過程
本篇文章將為大家講述關(guān)于 SpringBoot 項目工程完成后,是如何通過 java-jar 命令來啟動的,以及介紹 java-jar 命令的詳細(xì)內(nèi)容,對SpringBoot java?-jav啟動過程感興趣的朋友跟隨小編一起看看吧2023-05-05

