1、數組:數組是一種數據結構,用來儲存同一種類型值得集合,數組一旦被創建就不能改變它的大小。
2、既然數組的長度是不可改變的,那么怎么實現長度可變呢?
思路:既然數組長度不可變,那么我們可以創建一個長度與原數組不同的新數組,讓原數組變量指向新數組,從而實現長度可變(新數組如果沒有使用,那么就會被java垃圾回收機制回收銷毀,從而不浪費內存空間。)
a)直接創建新數組,讓原數組變量指向新數組。
import java.util.Arrays; /** * 這是我們用來測試的類 * * @author 404NOTFound */
public class Demo { public static void main(String[] args) { int[] src = new int[0]; int[] dest = new int[3]; src = dest; src[0] = 1; src[1] = 2; src[2] = 3; System.out.println(Arrays.toString(src)); } }
輸出結果:
b)使用Arrays類或者System類的靜態方法:Arrays.copyOf(),System.arraycopy(),傳入長度比原數組長度不同的參數就會拷貝創建一個長度不同的數組。
代碼如下:
import java.util.Arrays; public class Demo { public static void main(String[] args) { int[] src = new int[0]; src = Arrays.copyOf(src, 1); src[src.length - 1] = 1; System.out.println(Arrays.toString(src)); } }
c)使用ArrayList代替數組,通過泛型ArrayList可以儲存不同類型的對象。
代碼如下:
import java.util.ArrayList; import java.util.Arrays; public class Demo { public static void main(String[] args) { ArrayList<Integer> al = new ArrayList<>(); al.add(1); al.add(2); System.out.println("輸出長度:"+al.size()); al.add(3); System.out.println("輸出長度:"+al.size()); } }
輸出結果:
d)使用Vector,Vector存儲同類對象
代碼如下:
package test; import java.util.Vector; public class Test01 { public static void main(String[] args) { Vector vet = new Vector(); String str="test1"; double t1=0.124; vet.add(str); vet.add(String.valueOf(t1)); System.out.println("獲取大小:"+vet.size()); System.out.println(vet.get(0)); } }
輸出結果: