黑马程序员全套Java教程_Java基础教程_API(十四)
生活随笔
收集整理的這篇文章主要介紹了
黑马程序员全套Java教程_Java基础教程_API(十四)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
黑馬程序員全套Java教程_Java基礎教程_API(十四)
- 1、API
- 1.1 API概述
- 1.2 如何使用幫助文檔
- 2、String
- 2.1 String概述
- 2.2 String構造方法
- 2.3 String對象在內存中的特點
- 面試題:下列Java代碼中的變量a、b、c分別在內存的()存儲區存放
- 2.4 字符串的比較
- 2.5 通過幫助文檔查看String中的方法
- 面試題:統計字符次數
- 面試題:數組沒有length()方法?String沒有length()方法?
- 3、StringBuilder
- 3.1 StringBulider概述
- 3.2 StringBuilder構造方法
- 3.3 StringBuilder的添加和反轉方法
- 3.4 StringBuilder和String互相轉換
- 案例:拼接字符串
- 案例:字符串反轉
- 3.5 通過幫助文檔查看StringBuilder中的方法
1、API
1.1 API概述
- API(Application Programming Interface):應用程序編程接口。
- 比如說,編寫一個機器人程序去控制機器人踢足球,程序需要向機器人發出向前跑、向后跑、射門、搶球等各種命令。機器人廠商一定會提供一些用于控制機器人的接口類,這些類中定義好了操作機器人各種動作的方法。其實,這些接口類就是機器人廠商給應用程序編程的接口,大家把這些類稱為API。
- Java API:指的就是JDK中提供的各種功能的Java類。這些類將底層的實現封裝了起來,我們不需要關心這些類是如何實現的,只需要學習這些類如何使用,我們可以通過幫助文檔來學習這些API如何使用。
1.2 如何使用幫助文檔
- 1、在索引的搜索框內輸入想要查找的類。
- 2、看類在哪個包下。
- 3、看類的描述。
- 4、看構造方法
- 5、看成員方法。
2、String
2.1 String概述
- String類在java.lang包下,所以使用的時候不需要導包。
- String類代表字符串Java程序中的所有字符串文字(例如“abc”)都被實現為此類的實例,也就是說,Java程序中所有的雙引號字符串,都是String類的對象。
- 字符串的特點:
(1)字符串不可變,它們的值在創建后不能被修改。
(2)雖然Sting的值是不可變的,但是它們可以被共享。
(3)字符串效果上相當于字符數組(char[])(JDK8以前是字符數組,JDK9以后是字節數組),但是底層原理是字節數組(byte[])。
2.2 String構造方法
| public String() | 創建一個空白字符串對象,不含有任何內容 |
| public String(char[] chs) | 根據字符數組的內容,創建字符串對象 |
| public String(byte[] bys) | 根據字節數組的內容,來創建字符串對象 |
| String s = “abc”; | 直接賦值的方式創建字符串對象,內容就是abc |
推薦使用直接賦值的方式構建字符串對象
2.3 String對象在內存中的特點
- 1、通過new創建的字符串對象,每一次new都會申請一個內存空間,雖然內容相同,但是地址值不同。
上面代碼中,JVM會先創建一個字符數組,然后每一次new的時候都會有一個新的地址,只不過s1和s2參考的字符串內容是相同的。
- 2、以""方式給出的字符串,只要字符串序列相同(順序和大小寫),無論在程序代碼中出現幾次,JVM都只會建立一個String對象,并在字符串池中維護。
在上面代碼中,針對第一行代碼,JVM會建立一個String對象放在字符串池中,并給s3參考。第二行則讓s4直接參考字符串池中的String對象,也就是說它們本質上是同一個對象。
- 在內存中的變化:
面試題:下列Java代碼中的變量a、b、c分別在內存的()存儲區存放
- 堆區,棧區,棧區。首先要知道棧內存和堆內存,棧內存存儲局部變量(局部變量是定義在方法中的變量,使用完畢,立即消失);而堆內存存儲new出來的對象,對象初始化時,會為存儲空間添加默認值,每一個new出來的東西都有一個地址值,使用完畢,會在垃圾回收器空閑時被回收(參照筆記十——方法)。a是類中的成員變量,存放在堆區;b、c都是方法中的局部變量,存放在棧區。
2.4 字符串的比較
- 使用“==”做比較:
(1)基本類型:比較的是數據值是否相同。
(2)引用類型:比較的是地址值是否相同。 - 字符串是對象,它比較內容是否相同,是通過==equals()==方法來實現的:這個方法的聲明為public boolean equals(Object anObject),將字符串與指定對象進行比較。由于我們比較的是字符串對象,所以參數直接傳遞一個字符串。
2.5 通過幫助文檔查看String中的方法
| public boolean equals(Object anObject) | 比較字符串的內容,嚴格區分大小寫(用戶名和密碼) |
| public char charAt(int index) | 返回值指定索引 |
| public int length() | 返回字符串長度 |
面試題:統計字符次數
- 鍵盤錄入一個字符串,統計該字符串中大寫字母字符、小寫字母字符、數字字符出現的次數(不考慮其他字符)。
面試題:數組沒有length()方法?String沒有length()方法?
- 數組沒有length方法,有length的屬性,String有length()方法。JavaScript中,獲取字符串長度是通過length屬性得到的,這一點容易和Java混淆。
3、StringBuilder
3.1 StringBulider概述
如上圖,如果對字符串進行拼接操作,每次拼接,都會構建一個新的String對象,既耗時,又浪費內存空間,而這種操作還不可避免。那么有沒有一種比較好的方式可以解決這個問題?答案是肯定的,我們可以通過Java提供的StringBuilder類來解決這個問題。
- StringBuilder是一個可變的字符串類,我們可以把它看成是一個容器。這里的可變指的是StringBuilder對象中內容是可變的。
- String和StringBuilder的區別:String內容是不可變的,StringBuilder內容是可變的。
3.2 StringBuilder構造方法
| public StringBulider() | 創建一個空白可變字符串對象,不含有任何內容 |
| public StringBulider(str) | 根據字符串的內容,來創建可變字符串對象 |
3.3 StringBuilder的添加和反轉方法
| public StringBuilder append(任意類型) | 添加數據,并返回對象本身 |
| public StringBuilder reverse() | 返回相反的字符序列 |
3.4 StringBuilder和String互相轉換
- 1、StringBuilder轉換為String
public String toString():通過toString()就可以實現把StringBuilder轉換為String。 - 2、String轉換為StringBuilder
public StringBuilder(String s):通過構造方法就可以實現把String轉換為StringBuilder。
案例:拼接字符串
- 需求:定義一個方法,把int數組中的數據按照指定的格式拼接成字符串返回,調用該方法,并在控制臺輸出結果。例如,數組int[] arr = {1,2,3},執行方法后的輸出結果為:[1,2,3]
案例:字符串反轉
- 案例:定義一個方法,實現字符串反轉。鍵盤錄入一個字符串,調用該方法后,在控制臺輸出結果。例如,鍵盤錄入abc,輸出結果cba。
3.5 通過幫助文檔查看StringBuilder中的方法
| public StringBuilder append(任意類型) | 添加數據,并返回對象本身 |
| public StringBuilder reverse() | 返回相反的字符序列 |
| public String toString() | 通過toString()就可以實現把StringBuilder轉換為String |
總結
以上是生活随笔為你收集整理的黑马程序员全套Java教程_Java基础教程_API(十四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 粮草先行——Android折叠屏开发技术
- 下一篇: 《Java并发编程的艺术》之阻塞队列