Java 中 String 类的常规操作
String類(lèi)型詳解
String本身就是一個(gè)類(lèi),只是Java對(duì)其進(jìn)行了特殊處理。
兩種實(shí)例化方式原理及區(qū)別:
/* 兩種創(chuàng)建 String 對(duì)象的方法
* 1. 直接賦值:(推薦按這種方法)
* 2. 使用構(gòu)造方法
* */
String str1 = "123";
String str2 = new String("123");
/*兩者的區(qū)別
* 1. 直接賦值: 只會(huì)開(kāi)辟一塊堆內(nèi)存空間,并且該對(duì)象會(huì)保存在對(duì)象池中,以供下次使用
* 2. 使用構(gòu)造方法: 會(huì)開(kāi)辟兩塊堆內(nèi)存空間,并且一塊將會(huì)成為垃圾,并且不會(huì)自動(dòng)保存到對(duì)象池中,但可以通過(guò) str1.intern() 方法手工入池
* */
// 兩種創(chuàng)建 string 對(duì)象的區(qū)別
String str3 = "123";??? // 與 str1 共享 "123" 數(shù)據(jù)所占的堆內(nèi)存空間
System.out.println(str1 == str3);?? // 值為: true;??? JVM的常量共享
// 字符串的比較
System.out.println(str1 == str2);?? // 結(jié)果為 false
System.out.println(str1.equals(str2)); // 結(jié)果為 true
/*
* 原因分析:
* "==" 只能進(jìn)行數(shù)值的比較,str1 == str2 實(shí)際比較的是兩個(gè)字符串內(nèi)存地址的數(shù)值
* "equals()" 比較的才是兩者的內(nèi)容的區(qū)別
* */
/*
* 在以后的開(kāi)發(fā)中強(qiáng)烈建議采用 way_2 比較字符串.
* 原因在于:
*?? way_1 中 str1 如果為空的話會(huì)產(chǎn)生空指針異常,導(dǎo)致程序終止
*?? way_2 中 str1 即使為空,只會(huì)得到的結(jié)果為 false,不會(huì)出現(xiàn)異常
* */
// way_1
str1.equals("hello");
// way_2
"hello".equals(str1);
?
常用操作分類(lèi):
構(gòu)造函數(shù):
String(byte[]?bytes)
String(byte[]?bytes,?Charset?charset)
String(byte[]?bytes,?String?charsetName)
String(byte[]?bytes, int?offset, int?length)
String(char[]?value)
String(char[]?value, int?offset, int?count)
String(StringBuffer?buffer)
String(StringBuilder?builder)
字符串與字符數(shù)組:
??????
char[] | toCharArray() |
?
字節(jié)與字符串:
byte[] | getBytes() |
byte[] | getBytes(Charset?charset) |
byte[] | getBytes(String?charsetName) |
?
字符串比較:
int | compareTo(String?anotherString) 比較字符串的大小(-1、0、1) |
int | compareToIgnoreCase(String?str) 忽略大小寫(xiě)比較字符串大小 |
boolean | equals(Object?anObject) |
boolean | equalsIgnoreCase(String?anotherString) |
?
字符串查找:
boolean | contains(CharSequence?s) 是否包含 |
boolean | endsWith(String?suffix) |
int | indexOf(String?str) 返回找到的 str 的首字母索引值 |
int | indexOf(String?str, int?fromIndex) 從指定位置查找 |
int | lastIndexOf(String?str) 倒著查找 |
int | lastIndexOf(String?str, int?fromIndex) |
boolean | matches(String?regex) 使用正則表達(dá)式匹配 |
boolean | startsWith(String?prefix) |
boolean | startsWith(String?prefix, int?toffset) |
?
字符串替換:
String | replace(char?oldChar, char?newChar) |
String | replaceAll(String?regex,?String?replacement) |
String | replaceFirst(String?regex,?String?replacement) |
?
字符串拆分:
String[] | split(String?regex) |
String[] | split(String?regex, int?limit) 限制拆分后的個(gè)數(shù) |
?
字符串截取:
String | substring(int?beginIndex) |
String | substring(int?beginIndex, int?endIndex) |
?
其他常用方法
char | charAt(int?index) 返回指定索引位置的字符 |
String | concat(String?str) 連接兩個(gè)字符串類(lèi)似 “+” |
boolean | isEmpty() |
String | intern() |
int | length() |
String | toLowerCase() 轉(zhuǎn)換為小寫(xiě) |
String | toUpperCase() 轉(zhuǎn)換為大寫(xiě) |
String | trim() 去除開(kāi)頭結(jié)尾的空格(注意只有這一種方法:1.8) |
?PS:上面的方法是直接從 Java 1.8 API 文檔中提取出來(lái)的,這里主要作為一個(gè)個(gè)人總結(jié),由于較為簡(jiǎn)單所以沒(méi)有符詳細(xì)代碼。
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Java 中 String 类的常规操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux 创建桌面应用程序图标 (U
- 下一篇: JAVA 引用传递案例分析