天天看點

java--API、Object、String1. API簡介2. Object類3. String類4. StringBuilder類

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 幫助文檔.

    • API 幫助文檔就相當于說明書

      , 是用來介紹JDK提供的各個接口類的功能的, 進而幫助我們快速上手使用.

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對象, 轉成其對應的字元串形式的.