JAVA之PAI&字符串
1、API(Application Programming Interface):應用程序編程接口
JAVA API:指的是JDK中提供的各種功能的java類
2、字符串
- String
1.java.long.String類代表字符串
2.字符串的內容是不會發生改變的,它的對象在創建后不能被更改
3.創建String對象的兩種方式:直接賦值 new 構造方法

4.當使用雙引號直接賦值時,系統會檢查字符串在串池中是否存在 不存在則創建新的,存在則直接復用
5.比較:
==號比較:基本數據類型比較的是數據值,引用數據類型比較的是地址值。
字符串比較:a【boolean equals方法(要比較的字符串) 完全一樣結果才是true,否則為false】
b【boolean equalsIgnoreCase(要比較的字符串) 忽略大小寫的比較】
6.遍歷字符串:public char charAt(int index):根據索引返回字符
7.public int length():返回此字符串的長度
8.String substring(int beginIndex, int endIndex) 截取 【包頭不包尾,包左不包右。只有返回值才是截取的小串】
9.String substring(int beginIndex) 截取到末尾
10.String replace(舊值,新值) 替換【只有返回值才是替換之后的結果】
- StringBuilder
1. StringBuilder可以看作是一個容器,創建之后里面的內容是可變的
2.作用:提高字符串的操作效率
3.StringBuilder構造方法

4.StringBuilder成員方法【常用方法】

5.使用場景:字符串的拼接;字符串的反轉
- StringJonier
1.是容器,創建之后里面的內容是可變的
2.作用:提高字符串的操作效率,而且代碼編寫特別簡潔,但是目前市場上很少有人用
3.JDK出現的
4.構造方法:

例:
StringJoiner sj = new StringJoiner("---"); //1---2---3
StringJoiner sj = new StringJoiner(",","[","]");[1,2,3]
5.成員方法:


- StriingBuffer
- Pattern
- Matcher
3、字符串原理
- 字符串存儲的內存原理
- 直接賦值會復用字符串常量池中的;new出來不會復用,而是開辟一個新的空間
- ==號比較的是什么?
- 基本數據類型比較數據值;引用數據類型比較地址值
- 字符串拼接的底層原理
- 一個加號,堆內存中倆對象
- 如果沒有變量參與,都是字符串直接相加,編譯之后就是拼接之后的結果,會復用串池中的字符串
- 如果有變量參與,每一行拼接的代碼,都會在內存中創建新的字符串,浪費內存。

- StringBuilder提高效率原理圖
-
- StringBuilder是一個內容可變的容器,所有要拼接的內容都會往StringBuilder中放,不會創建很多無用的空間,節約內存 字符串拼接的時候,如果有變量:
JDK8以前:系統底層會自動創建一個StringBuilder對象,然后再調用其append方法完成拼接。
拼接后,再調用其toString方法轉換為String類型,而toString方法的底層是直接new了一個字符串對象
JDK8版本:系統會預估要字符串拼接之后的總大小,把要拼接的內容都放在數組中,此時也是產生一個新的字符串。
- StringBuilder是一個內容可變的容器,所有要拼接的內容都會往StringBuilder中放,不會創建很多無用的空間,節約內存 字符串拼接的時候,如果有變量:
- StringBuilder源碼分析
- 1—默認創建一個長度為16的字節數組
2-添加的內容長度小于16,直接存
3-添加的內容大于16會擴容(原來的容量*2+2)
4-如果擴容之后還不夠,以實際長度為準
- 1—默認創建一個長度為16的字節數組
浙公網安備 33010602011771號