在 Java 的某些方法中,我們會注意到參數會需要代入頭尾的 index
舉例來說
String類別的 substring 方法,可以回傳某字串的子字串
其中一種多載(Overloading)形式是帶有參數 int beginIndex
會回傳以該index為首,直到字串尾的子字串
EX:
S1 = "abcdef";
S2 = S1.substring(2);
S2 = "cdef"
另一種多載形式帶有兩個參數,int beginIndex 和 int endIndex
按前面的理解就是包含以 beginIndex 為首,endIndex 為尾的子字串
但事實並非如此
S2 = S1.substring(2, 5);
S2 = "cde"
這裡的 endIndex 不包含在 substring
也就是範圍 (2, 5) 是2, 3, 4,不包含 5,子字串長度為 3
所以實際上 substring(int beginIndex, int endIndex)指的是
回傳原字串 從 beginIndex 到 endIndex-1 索引範圍的子字串
為什麼要這樣定義呢?
你可能會發現,此字串的長度可以透過 endIndex - beginIndex 而得
此外,以下式子也成立
substring(a, c) = substring(a, b) + substring(b, c) (a < b < c)
再者,字串的 index 是從 0 ~ n-1 (假設字串長度為 n )
因此,我們也可以用這個範圍的子字串代表原字串:
即 s = s.substring(0, n-1)
---------------------------------------------------------
另外一個例子是 Arrays 類別的 fill 方法
可以將一維陣列中特定數量(部分或全部)的元素設定成新的相同數值
針對不同資料型別的陣列也有不同多載形式
以 int 為例
參數:
a[] 一維陣列
fromIndex, toIndex 要更動的範圍
val 新的數值
arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Arrays.fill(arr, 2, 5, 0);
新陣列
arr = {1, 2, 0, 0, 0, 6, 7, 8, 9, 10};
index 2 ~ (5-1) 範圍的值改為 0
p.s.
fill方法也有只包含 int[]a 與 int val 參數的形式
就是將陣列的所有內容都以 val 取代
實作範例:
舉例來說
String類別的 substring 方法,可以回傳某字串的子字串
其中一種多載(Overloading)形式是帶有參數 int beginIndex
會回傳以該index為首,直到字串尾的子字串
EX:
S1 = "abcdef";
S2 = S1.substring(2);
S2 = "cdef"
另一種多載形式帶有兩個參數,int beginIndex 和 int endIndex
按前面的理解就是包含以 beginIndex 為首,endIndex 為尾的子字串
但事實並非如此
S2 = S1.substring(2, 5);
S2 = "cde"
這裡的 endIndex 不包含在 substring
也就是範圍 (2, 5) 是2, 3, 4,不包含 5,子字串長度為 3
所以實際上 substring(int beginIndex, int endIndex)指的是
回傳原字串 從 beginIndex 到 endIndex-1 索引範圍的子字串
為什麼要這樣定義呢?
你可能會發現,此字串的長度可以透過 endIndex - beginIndex 而得
此外,以下式子也成立
substring(a, c) = substring(a, b) + substring(b, c) (a < b < c)
再者,字串的 index 是從 0 ~ n-1 (假設字串長度為 n )
因此,我們也可以用這個範圍的子字串代表原字串:
即 s = s.substring(0, n-1)
---------------------------------------------------------
另外一個例子是 Arrays 類別的 fill 方法
可以將一維陣列中特定數量(部分或全部)的元素設定成新的相同數值
針對不同資料型別的陣列也有不同多載形式
以 int 為例
fill(int[] a, int fromIndex, int toIndex, int val)
參數:a[] 一維陣列
fromIndex, toIndex 要更動的範圍
val 新的數值
arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Arrays.fill(arr, 2, 5, 0);
新陣列
arr = {1, 2, 0, 0, 0, 6, 7, 8, 9, 10};
index 2 ~ (5-1) 範圍的值改為 0
p.s.
fill方法也有只包含 int[]a 與 int val 參數的形式
就是將陣列的所有內容都以 val 取代
實作範例:
留言
張貼留言