Java 中 String 类的常规操作
String類型詳解
String本身就是一個類,只是Java對其進行了特殊處理。
兩種實例化方式原理及區別:
/* 兩種創建 String 對象的方法
* 1. 直接賦值:(推薦按這種方法)
* 2. 使用構造方法
* */
String str1 = "123";
String str2 = new String("123");
/*兩者的區別
* 1. 直接賦值: 只會開辟一塊堆內存空間,并且該對象會保存在對象池中,以供下次使用
* 2. 使用構造方法: 會開辟兩塊堆內存空間,并且一塊將會成為垃圾,并且不會自動保存到對象池中,但可以通過 str1.intern() 方法手工入池
* */
// 兩種創建 string 對象的區別
String str3 = "123";??? // 與 str1 共享 "123" 數據所占的堆內存空間
System.out.println(str1 == str3);?? // 值為: true;??? JVM的常量共享
// 字符串的比較
System.out.println(str1 == str2);?? // 結果為 false
System.out.println(str1.equals(str2)); // 結果為 true
/*
* 原因分析:
* "==" 只能進行數值的比較,str1 == str2 實際比較的是兩個字符串內存地址的數值
* "equals()" 比較的才是兩者的內容的區別
* */
/*
* 在以后的開發中強烈建議采用 way_2 比較字符串.
* 原因在于:
*?? way_1 中 str1 如果為空的話會產生空指針異常,導致程序終止
*?? way_2 中 str1 即使為空,只會得到的結果為 false,不會出現異常
* */
// way_1
str1.equals("hello");
// way_2
"hello".equals(str1);
?
常用操作分類:
構造函數:
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)
字符串與字符數組:
??????
char[] | toCharArray() |
?
字節與字符串:
byte[] | getBytes() |
byte[] | getBytes(Charset?charset) |
byte[] | getBytes(String?charsetName) |
?
字符串比較:
int | compareTo(String?anotherString) 比較字符串的大小(-1、0、1) |
int | compareToIgnoreCase(String?str) 忽略大小寫比較字符串大小 |
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) 使用正則表達式匹配 |
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) 限制拆分后的個數 |
?
字符串截取:
String | substring(int?beginIndex) |
String | substring(int?beginIndex, int?endIndex) |
?
其他常用方法
char | charAt(int?index) 返回指定索引位置的字符 |
String | concat(String?str) 連接兩個字符串類似 “+” |
boolean | isEmpty() |
String | intern() |
int | length() |
String | toLowerCase() 轉換為小寫 |
String | toUpperCase() 轉換為大寫 |
String | trim() 去除開頭結尾的空格(注意只有這一種方法:1.8) |
?PS:上面的方法是直接從 Java 1.8 API 文檔中提取出來的,這里主要作為一個個人總結,由于較為簡單所以沒有符詳細代碼。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Java 中 String 类的常规操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 创建桌面应用程序图标 (U
- 下一篇: Java中的程序设计模式--单例与多例