API、Object、String
- 1. API簡介
-
- 1.1 概述
- 1.2 幫助文檔的使用步驟
- 1.3 示例: Scanner的用法
- 2. Object類
-
- 2.1 概述
- 2.2 構造方法
- 2.3 成員方法
- 2.4 示例一: toString方法示範
- 2.5 示例二: equals()方法示範
- 3. String類
-
- 3.1 概述
- 3.2 構造方法
- 3.3 示例一: 建立字元串對象
- 3.4 String建立對象的特點
-
- 3.4.1 建立字元串對象的方式
- 3.4.2 示例
- 3.5 字元串的比較
-
- 3.5.1 涉及到的方法
- 3.5.2 示例示範
- 3.6 示例二: 模拟使用者登入
-
- 3.6.1 需求
- 3.6.2 參考代碼
- 3.7 示例三: 周遊字元串
- 3.8 示例四: 統計字元次數
- 3.9 案例五: 字元串拼接
- 3.10 案例六: 字元串反轉
- 3.11 通過幫助文檔檢視String中的方法
- 3.12 String方法詳解
-
- contains
- endsWith
- startsWith
- indexOf
- lastIndexOf
- replace
- substring
- toCharArray
- toLowerCase
- toUpperCase
- trim
- split
- 4. StringBuilder類
-
- 4.1 概述
-
- String和StringBuilder之間的差別
- 4.2 構造方法
- 4.3 示例一: StringBuilder入門
- 4.4 添加和反轉方法
- 4.5 StringBuilder和String之間的互相轉換
- 4.6 案例二: 拼接字元串更新版
- 4.7 案例三: 字元串反轉
- 4.8 通過幫助文檔檢視StringBuilder中的方法
1. API簡介
1.1 概述
- API全稱是
. 例如:Application Programming Interface(應用程式程式設計接口)
- 編寫一個機器人程式去控制機器人踢足球,程式就需要向機器人發出向前跑、向後跑、射門、搶球等各種指令,機器人廠商一定會提供一些用于控制機器人的接口類,
。其實,這些類中定義好了操作機器人各種動作的方法
,大家把這些類稱為API。這些接口類就是機器人廠商提供給應用程式程式設計的接口
- 編寫一個機器人程式去控制機器人踢足球,程式就需要向機器人發出向前跑、向後跑、射門、搶球等各種指令,機器人廠商一定會提供一些用于控制機器人的接口類,
- Java API:
指的就是JDK中提供的各種功能的Java類.
-
.這些類将底層的實作封裝了起來, 我們不需要關心這些類是如何實作的, 隻需要學習這些類如何使用即可
-
- 我們可以通過幫助文檔來學習這些API如何使用.
- 記憶:
- API
指的是本意
JDK中提供的各種功能的Java類.
- 但實際開發中, 我們
的打開API指的不是JDK提供的Java類, 而是常說
API 幫助文檔.
-
, 是用來介紹JDK提供的各個接口類的功能的, 進而幫助我們快速上手使用.API 幫助文檔就相當于說明書
- API
1.2 幫助文檔的使用步驟
- 1.右鍵打開該文檔.
java--API、Object、String1. API簡介2. Object類3. String類4. StringBuilder類 - 2.找到索引頁籤中的輸入框.
java--API、Object、String1. API簡介2. Object類3. String類4. StringBuilder類 - 3.在輸入框中輸入要查找的類, 例如Random.
java--API、Object、String1. API簡介2. Object類3. String類4. StringBuilder類 - 4.看類在哪個包下. 如果是
.java.lang包下的類, 則無需導包, 可以直接使用
- 而其他包下的類和接口, 在使用前必須先導包.
java--API、Object、String1. API簡介2. Object類3. String類4. StringBuilder類
- 而其他包下的類和接口, 在使用前必須先導包.
- 5.大概的看下類的說明, 知道該類是用來幹嘛的即可.
java--API、Object、String1. API簡介2. Object類3. String類4. StringBuilder類 - 6.看構造方法, 根據指定的參數清單, 建立該類的對象.
java--API、Object、String1. API簡介2. Object類3. String類4. StringBuilder類 - 7.看成員方法, 重點看(傳回值, 方法名, 參數清單, 方法描述)
java--API、Object、String1. API簡介2. Object類3. String類4. StringBuilder類
1.3 示例: Scanner的用法
- 需求
- 按照幫助文檔的使用步驟學習Scanner類的使用, 并實作鍵盤錄入一個字元串, 然後把結果輸出在控制台上.
- 參考代碼略
2. Object類
2.1 概述
-
Object類是所有類的父類, 所有的類都直接或者間接繼承自Object類.
2.2 構造方法
- 思考題:
回想咱們之前說過的一句話為什麼子類的構造方法的第一行, 預設都是super(), 而不是帶參構造呢?
2.3 成員方法
- 解釋:
.傳回對象的字元串表示形式(即: 位址值), 無意義, 建議子類重寫該方法
- 解釋:
.比較兩個對象是否相等, 預設比較的是位址值, 無意義, 子類一般都會重寫該方法
- 注意: 實際開發中,
我們認為如果同一個類的兩個對象, 各個屬性值都相同, 那麼它們就是同一個對象.
- 例如:
//雖然s1和s2對象的位址值不同, 但是它們的屬性值都相同, 是以實際開發中我們認為它們是同一個對象.
Student s1 = new Student("劉亦菲", 33);
Student s2 = new Student("劉亦菲", 33);
2.4 示例一: toString方法示範
- 需求
- 定義學生類Student, 屬性為姓名和年齡, 生成對應的空參, 全參, getXxx()和setXxx()方法.
- 在StudentTest測試類中, 建立學生類對象并直接列印, 觀察程式的運作結果.
- 參考代碼
- 略.
2.5 示例二: equals()方法示範
- 需求
- 定義學生類Student, 屬性為姓名和年齡, 生成對應的空參, 全參, getXxx()和setXxx()方法.
- 在StudentTest測試類中, 建立兩個學生類對象, 屬性值都是: 劉亦菲, 33
- 并直接列印, 觀察程式的運作結果.
- 參考代碼
- 略
- 記憶: == 和 equals()方法的差別是什麼?
-
号在比較==
時比較的是基本資料類型
,而用==号比較兩個值
時比較的是兩個對象的對象
位址值
- 其實
比較的不管是基本資料類型,還是引用資料類型的變量,比較的都是值,隻是==
,引用型變量存的值是對象的位址
equals内部還是 ==
-
3. String類
3.1 概述
- String代表
, 即: 由字元串類
. 字元串的多個字元組成的一串資料
就是一個本質
.字元數組
3.2 構造方法
- 解釋: 建立一個空白字元串對象, 不包含任何内容.
- 解釋: 把字元串資料封裝成字元串對象.
- 解釋: 把字元數組的資料封裝成字元串對象.
- 解釋: 把字元數組的一部分資料封裝成字元串對象.
- 解釋: 把位元組數組的資料封裝成字元串對象.
- 解釋: 把位元組數組的一部分資料封裝成字元串對象.
3.3 示例一: 建立字元串對象
- 需求
- 分别通過上述的三種方式建立字元串對象.
- 在main方法中, 通過輸出語句, 直接列印建立好的字元串對象.
- 提示:
.輸出語句直接列印對象, 預設調用了對象的toString()方法
- 參考代碼
- 略
- 記憶:
的建立字元串對象的方法是:最常用
;String s = "abc"
3.4 String建立對象的特點
3.4.1 建立字元串對象的方式
- 通過
建立的字元串對象,new
.每一次new都會申請一個記憶體空間, 雖然内容相同, 但是位址值不同
char[] chs = {'a', 'b', 'c'};
String s1 = new String(chs);
String s2 = new String(chs); //這裡的s1和s2的位址值肯定是不同的.
- 通過
方式建立的字元串, 隻要字元序列相同(""
),順序和大小寫
.無論在程式代碼中出現幾次, JVM都隻會建立一個String對象, 并在字元串池中維護
String s1 = "abc";
String s2 = "abc"; //這兩個對象在記憶體中其實是同一個對象.
3.4.2 示例
- 需求
- 定義字元數組chs, 初始化值為: 'a, ‘b’, ‘c’, 這三個字元 .
- 将其分别封裝成s1, s2這兩個字元串對象.
- 通過==判斷s1和s2這兩個字元串對象是否相同.
- 直接通過""的方式建立兩個字元串對象s3和s4.
- 通過==判斷s3和s4這兩個字元串對象是否相同.
- 參考代碼
- 略
- 記憶體圖解
- 略
3.5 字元串的比較
3.5.1 涉及到的方法
- 解釋: 比較兩個字元串的内容是否相同, 區分大小寫. 即: “a” 和 "A"不是同一個字元串.
- 解釋: 比較兩個字元串的内容是否相同, 不區分大小寫. 即: “a” 和 "A"是同一個字元串.
3.5.2 示例示範
- 需求
- 定義字元數組chs, 初始化值為: 'a, ‘b’, ‘c’, 這三個字元 .
- 将其分别封裝成s1, s2這兩個字元串對象.
- 直接通過""的方式建立兩個字元串對象s3和s4.
- 通過==分别判斷s1和s2, s1和s3, s3和s4是否相同.
- 通過equals()分别判斷s1和s2, s1和s3, s3和s4是否相同.
- 通過equalsIgnoreCase()判斷字元串abc和ABC是否相同.
- 參考代碼
- 略
3.6 示例二: 模拟使用者登入
3.6.1 需求
- 模拟使用者登入, 隻給3次機會, 登入成功則提示"歡迎您, ***".
- 登入失敗則判斷是否還有登入機會, 有則提示剩餘登入次數, - - 沒有則提示"您的賬号已被鎖定".
- 假設初始化賬号和密碼分别為: “大牛”, “大牛程式員”.
3.6.2 參考代碼
- 略.
3.7 示例三: 周遊字元串
- 需求
- 鍵盤錄入一個字元串, 使用程式實作在控制台周遊列印該字元串.
- 提示
- 解釋: 擷取字元串的長度.
- 解釋: 根據索引, 擷取該索引對應的字元.
- 參考代碼
- 略.
3.8 示例四: 統計字元次數
- 需求
- 鍵盤錄入一個字元串, 統計該字元串中大寫字母字元, 小寫字母字元, 數字字元出現的次數.
- 注意:
不考慮其他字元, 例如@, !, \, /等
- 參考代碼
- 略.
3.9 案例五: 字元串拼接
- 需求
- 定義方法arrayToString(), 把int數組的元素按照指定的格式拼接成一個字元串, 并傳回.
- 在main方法中, 調用上述的方法.
- 例如: 數組為int[] arr = {1, 2, 3}, 則拼接後, 結果為: [1, 2, 3]
- 參考代碼
- 略.
3.10 案例六: 字元串反轉
- 需求
- 定義方法reverse(), 實作字元串的反轉.
- 在main方法中鍵盤錄入一個字元串, 調用上述的方法後, 在控制台輸出結果.
- 例如: 鍵盤錄入abc, 輸出結果cba.
- 提示: 用for循環, 倒序周遊數組, 然後拼接每一個元素即可.
- 參考代碼
- 略.
3.11 通過幫助文檔檢視String中的方法
- 解釋: 比較兩個字元串的内容是否相同, 區分大小寫.
- 解釋: 根據給定的索引, 擷取其對應的字元.
- 解釋: 擷取字元串的長度.
- 解釋:判斷字元串中是否包含某個字元串
- 解釋: 判斷字元串是否以指定字元串結尾
- 解釋: 判斷字元串是否以指定字元串開頭
- 解釋: 擷取指定字元串第一次出現的位置,從索引0開始往後找
- 解釋: 擷取指定字元串第一次出現的位置,從指定索引處開始往後找
- 解釋: 擷取指定字元串最後第一次出現的位置,從最後往前找
- 解釋: 講字元串按照指定規則進行切割,将切割後的結果放到數組中傳回
- 解釋: 從指定位置開始截取到字元串的末尾, 将截取後的結果傳回
- 解釋: 從指定位置開始截取, 到指定位置結束, 包含頭不包含,結果是[beginIndex,endIndex)之間的字元串
- 解釋: 将字元串内容變小寫傳回
- 解釋:将字元串内容變大寫傳回
3.12 String方法詳解
contains
- 方法原型:
public boolean contains (CharSequence s)
-
。CharSequence是一個接口,String類是它的實作類
- 功能:
)。存在,傳回true,否則,傳回false。判斷參數字元串在目前字元串中是否存在(區分大小寫
String s = "我愛Java,我愛學習!";
System.out.println("字元串中是否包含Java:" + s.contains("Java"));//true
System.out.println("字元串中是否包含java:" + s.contains("java"))//false
endsWith
- 方法原型:
public boolean endsWith(String suffix)
- 功能:
。測試此字元串是否以指定的字尾結尾(區分大小寫)
String name = "Test.java";
System.out.println("判斷name是否以java結尾:" + name.endsWith("java"));//true
System.out.println("判斷name是否以Java結尾:" + name.endsWith("Java"));//false
startsWith
- 方法原型:
public boolean startsWith(String prefix)
- 功能:
測試此字元串是否以指定的字首開始(區分大小寫)
String name = "我愛Java";
System.out.println("字元串是否以‘我’開頭:" + name.startsWith("我"));//true
indexOf
- 方法原型:
public int indexOf(String str)
- 功能:
.傳回指定子字元串第一次出現的字元串内的索引。如果不包含,則傳回-1
String str = "我愛Java,我愛學習!";
System.out.println("在字元串中,Java第一次出現的位置:" + str.indexOf("Java"));//2
System.out.println("在字元串中,java第一次出現的位置:" + str.indexOf("java"));//-1
lastIndexOf
- 方法原型:
public int lastIndexOf(String str)
- 功能:
.傳回指定子字元串最後一次出現的字元串中的索引。 如果不包含,則傳回-1
String str = "我愛Java,我愛學習!";
System.out.println("在字元串中,'我'最後一次出現的位置:" + str.lastIndexOf("我"));//7
replace
- 方法原型:
public String replace(CharSequence target,CharSequence replacement)
- 功能:将與字面目标序列比對的字元串的每個子字元串替換為指定的文字
序列。 替換從字元串開始到結束,替換
。例如,在字元串“aaa”中用“b”替換“aa”将導緻“ba”而不是“ab”
String str = "我愛吃紅燒鯉魚,我太想吃紅燒鯉魚了!";
System.out.println("将'紅燒鯉魚'替換為'鹹水雞':" + str.replace("紅燒鯉魚","鹹水雞"));
System.out.println("原字元串:" + str);
substring
- 方法原型:
:将目前字元串public String substring(int beginIndex)
。從beginIndex開始截取到末尾
- 方法原型:
:将目前字元串public String substring(int beginIndex, int endIndex)
。從beginIndex開始截取到endIndex - 1處
- 功能:
截取字元串,并将截取後的字元串傳回。原字元串不變。
String str = "我愛Java";
System.out.println("截取'Java':" + str.substring(2));//Java
System.out.println("截取'我愛':" + str.substring(0,2))//我愛
toCharArray
- 方法原型:
public char[] toCharArray()
- 功能:
。将目前字元串轉換為char[]數組
String str = "身無彩鳳雙飛翼";
char[] chArray = str.toCharArray();
System.out.println(chArray);
toLowerCase
- 方法原型: public String toLowerCase()
- 功能:将目前字元串中的所有英文字元轉換為小寫,并傳回一個轉換後的新字元串,原字元串不變。
String str = "我愛Java";
System.out.println("轉換為小寫:" + str.toLowerCase());//我愛java
System.out.println("原字元串:" + str);//我愛Java
toUpperCase
- 方法原型:
public String toUpperCase()
- 功能:
将目前字元串中的所有英文字元轉換為大寫,并傳回一個轉換後的新字元串,原字元串不變。
String str = "我愛Java";
System.out.println("轉換為大寫:" + str.toUpperCase());//我愛JAVA
System.out.println("原字元串:" + str);//我愛Java
trim
- 方法原型:
public String trim()
- 功能:
去掉目前字元串的前後空格,并傳回一個新字元串,原字元串不變。
String str = " ad min ";
System.out.println("去掉前後空格後|" + str.trim() + "|");//去掉前後空格後|ad min|
System.out.println("原字元串|" + str + "|");//原字元串| ad min |
split
- 方法原型:
public String[] split(String regex)
- 功能:
切割字元串——将字元串以regex作為分隔符進行切割。
String str = "張三,20,男,13513153355";
String[] arr = str.split(",");
for(int i = 0;i < arr.length ; i++){
System.out.println(arr[i]);
}
- 說明:
。此方法的參數實際上是一個"正規表達式"
4. StringBuilder類
- 分析如下代碼, 執行效率是高還是低呢?
String s = "hello";
s += "world";
System.out.println(s);
- 解釋:
-
,.如果字元串進行拼接操作, 每次拼接, 都會建構一個新的String對象, 即耗時, 又浪費記憶體空間. 而這種操作還不可避免
-
- 那有沒有一種比較好的方式來解決這個問題呢?
- 答案是肯定的, 我們
.可以通過Java提供的StringBuilder類來解決這個問題
- 答案是肯定的, 我們
4.1 概述
-
.StringBuilder類在java.lang包下, 無需導包, 可以直接使用
- StringBuilder是一個可變的字元序列, 也叫
.字元串緩沖區類
- 我們可以把它看做一個容器, 這裡的可變指的是StringBuilder對象中的内容是可變的
String和StringBuilder之間的差別
-
:String
内容是不可變的.
-
:StringBuilder
内容是可變的.
4.2 構造方法
- 解釋: 建立一個空白可變字元串對象, 它不含有任何内容.
- 解釋: 根據字元串的内容, 來建立可變字元串對象.
4.3 示例一: StringBuilder入門
- 需求
- 通過上述的兩種方式, 建立StringBuilder對象.
- 在控制台直接列印上述建立好的兩個對象, 并觀察結果.
- 參考代碼
- 略
4.4 添加和反轉方法
- 解釋: 添加資料, 并傳回對象本身.
- 解釋: 傳回相反的字元序列.
- 需求
- 通過空參構造建立StringBuilder類的對象sb.
- 通過append()方法, 往sb對象中添加"hello",然後用sb2對象接收.
- 列印對象sb和sb2的結果, 并觀察.
- 通過reverse()方法, 來反轉上述的内容.
- 參考代碼
- 略.
4.5 StringBuilder和String之間的互相轉換
StringBuilder轉化成String
- 解釋: 可以通過StringBuilder#toString()方法直接實作.
String轉成StringBuilder
- 解釋: 通過StringBuilder類的構造方法實作, `public StringBuilder(String s)
- 需求
- 定義空參不可變StringBuilder對象, 往裡邊添加完"hello"字元串後, 再将其轉成String類型的對象.
- 将String字元串轉成StringBuilder對象, 然後列印.
- 代碼示範
- 略
4.6 案例二: 拼接字元串更新版
- 需求
- 定義方法arrayToString(), 把int數組的元素按照指定的格式拼接成一個字元串, 并傳回.
- 在main方法中, 調用上述的方法.
- 例如: 數組為int[] arr = {1, 2, 3}, 則拼接後, 結果為: [1, 2, 3]
- 參考代碼
- 略.
4.7 案例三: 字元串反轉
- 需求
- 定義方法reverse(), 實作字元串的反轉.
- 在main方法中鍵盤錄入一個字元串, 調用上述的方法後, 在控制台輸出結果.
- 例如: 鍵盤錄入abc, 輸出結果cba.
- 提示: 用for循環, 倒序周遊數組, 然後拼接每一個元素即可.
- 參考代碼
- 略.
4.8 通過幫助文檔檢視StringBuilder中的方法
- 解釋: 添加資料, 并傳回對象本身.
- 解釋: 傳回相反的字元序列.
- 解釋: 用來将StringBuilder對象, 轉成其對應的字元串形式的.