Java學習筆記——第八天

zgg1h發表於2024-03-07

常用API(String、ArrayList部分)

API

API是什麼

API ( Application Programming Interface,應用程式程式設計介面)就是別人寫好的一些程式,給程式設計師直接拿去呼叫即可解決問題。

API文件是什麼

Java提供的API使用說明書。

包是什麼

  • 包是用來分門別類的管理各種不同程式的,類似於資料夾,建包有利於程式的管理和維護。

建包的語法格式

package 包名;

在自己程式中呼叫其他包下的程式的注意事項

  • 如果當前程式中,要呼叫自己所在包下的其他程式,可以直接呼叫。(同一個包下的類,互相可以直接呼叫)
  • 如果當前程式中,要呼叫其他包下的程式,則必須先在當前程式中導包才可以訪問。導包格式:import 包名.類名;
  • 如果當前程式中,要呼叫Java提供的程式,也需要先導包才可以使用。但是Java.lang包下的程式不需要我們導包,可以直接使用。
  • 如果當前程式中,要呼叫多個不同包下的程式,而這些程式名正好一樣,此時預設只能匯入一個程式,另一個程式必須帶包名訪問。

String

String是什麼

String代表字串,可以用來建立物件封裝字串資料,並對其進行處理。

String建立物件的方式

方式一:Java 程式中的所有字串文字(例如“abc”)都為此類的物件。

String 變數名 = "字串";

方式二:呼叫String類的構造器初始化字串物件。

構造器 說明
public String() 建立一個空白字串物件,不含有任何內容
public String(String original) 根據傳入的字串內容,來建立字串物件
public String(char[] chars) 根據字元陣列的內容,來建立字串物件
public String(byte[] bytes) 根據位元組陣列的內容,來建立字串物件

String的常用方法

常用方法名 說明
public int length() 獲取字串的長度返回(就是字元個數)
public char charAt(int index) 獲取某個索引位置處的字元返回
public char[] toCharArray(): 將當前字串轉換成字元陣列返回
public boolean equals(Object anObject) 判斷當前字串與另一個字串的內容一樣,一樣返回true
public boolean equalsIgnoreCase(String anotherString) 判斷當前字串與另一個字串的內容是否一樣(忽略大小寫)
public String substring(int beginIndex, int endIndex) 根據開始和結束索引進行擷取,得到新的字串(包前不包後)
public String substring(int beginIndex) 從傳入的索引處擷取,擷取到末尾,得到新的字串返回
public String replace(CharSequence target, CharSequence replacement) 使用新值,將字串中的舊值替換,得到新的字串
public boolean contains(CharSequence s) 判斷字串中是否包含了某個字串
public boolean startsWith(String prefix) 判斷字串是否以某個字串內容開頭,開頭返回true,反之
public String[] split(String regex) 把字串按照某個字串內容分割,並返回字串陣列回來
  • ==在8種基本資料型別的比較中的作用是比較對應變數的數值是否相等
  • ==在物件型別的比較中的作用是比較對應物件在堆記憶體中的地址是否相等

String在使用時的注意事項

注意事項一

  • String物件的內容不可改變,被稱為不可變字串物件。

  • 不可變資料型別:值改變,地址不變的資料型別。

  • 每次試圖改變字串物件實際上是新產生了新的字串物件了,變數每次都是指向了新的字串物件,之前字串物件的內容確實是沒有改變的,因此說String的物件是不可變的。

注意事項二

  • 以“...”方式寫出的字串物件,會儲存到字串常量池,且相同內容的字串只儲存一份。
  • 透過new方式建立字串物件,每new一次都會產生一個新的物件放在堆記憶體中。

注意事項三

Java存在編譯最佳化機制,程式在編譯時: “a” + “b” + “c” 會直接轉成 “abc”,以提高程式的執行效能。

String s1 = "abc";
String s2 = "a" + "b" + "c";
System.out.println(s1 == s2);

輸出為:

true

字串常量池

  • 以“...”方式寫出的字串物件,會儲存到字串常量池,且相同內容的字串只儲存一份,之後所有變數值為字串常量池裡有的變數都會指向該常量池裡的變數。
  • Java設計字串常量池的目的是節約記憶體。

ArrayList

集合

集合是什麼

集合是一種容器,用來裝資料的,類似於陣列,但是集合的大小可以動態變化。

集合有哪些種類

List、Map、Set、LinkedList、ArrayList、HashMap、TreeMap、HashSet、TreeSet、LinkedHashMap、LinkedHashSet等。

集合的特點

大小可變;型別可以不固定;功能比陣列更強大;適合於元素個數不確定,同時存在增刪改查的業務場景。

ArrayList是什麼

是用的最多、最常見的一種集合,其元素存在索引且可以重複。

如何建立ArrayList物件

public ArrayList(); //ArrayList的構造器
ArrayList 變數名 = new ArrayList(); //建立ArrayList物件

泛型

  • 集合都是支援泛型的,即可以儲存任意型別的變數,並且可以指定例項化物件只能儲存某一種型別的變數。

  • 集合和泛型都不支援基本資料型別,只支援引用資料型別。

  • 定義集合都應該採用泛型。

  • ArrayList是泛型類,可以約束儲存的資料型別。格式為:

ArrayList<類名> 變數名 = new ArrayList<類名>(); //完整格式
ArrayList<類名> 變數名 = new ArrayList<>(); //從JDK1.7開始有的簡化格式
  • 不約束資料型別的格式為:
ArrayList 變數名 = new ArrayList();
ArrayList<Object> 變數名 = new ArrayList<>(); //推薦
  • ArrayList可以儲存自定義型別的物件:
ArrayList<自定義型別> 變數名 = new ArrayList<>();
//此時集合容器中儲存的是每個物件在堆記憶體中的地址

ArrayList的常用方法

常用方法名 說明
public boolean add(E e) 將指定的元素新增到此集合的末尾
public void add(int index,E element) 在此集合中的指定位置插入指定的元素
public E get(int index) 返回指定索引處的元素
public int size() 返回集合中的元素的個數
public E remove(int index) 刪除指定索引處的元素,返回被刪除的元素
public boolean remove(Object o) 刪除指定的元素,返回刪除是否成功,只刪除匹配到的索引最小的一個
public E set(int index,E element) 修改指定索引處的元素,返回被修改的元素

從集合中遍歷元素,並篩選出元素刪除它,應該如何操作才能不出bug

  • 方式一:每次刪除一個資料後,索引-1。
  • 方式二:從集合末尾開始遍歷然後刪除。

相關文章