Skip to main content
 首页 » 编程设计

Java中的数组

2022年07月19日28yjmyzz

1. 使用用Java中的数组,必须要经过声明数组和分配内存给该数组两个步骤(定义时就初始化除外)。

int a[] = null; 
a = new int[10]; 
 
int[] a = null; 
a = new int[10]; 
 
int a[] = new int[10];

其中 null 表示的是引用类型的默认值,数组是引用类型,null表示目前还没有任何指向的内存空间。

2. Java中获取数组的长度可以使用 <数组名>.length 的形式,若是多维数组,获取下一维数组的长度可以使用 <数组名[i]>.length 的形式。

3. Java中的数组也可以静态初始化

int a[5] = {1, 2, 3, 4, 5};

4. Java中的二维数组

int b[][]; 
b = new int[4][3]; //4行3列 
 
int b[][] = new int[4][3];

5. Java中的二维数组的初始化

int b[][] = {{row 1}, {row 2}, {row n}};

6. 二维数组Demo

public class Array { 
    public static void main(String args[]) { 
        int score[][] = {{80, 90}, {10, 20, 30, 40, 50}, {60, 70, 100}}; 
        for (int i = 0; i < score.length; i++) { 
            for (int j = 0; j < score[i].length; j++) { //注意这里的score[i].length 
                System.out.print(score[i][j] + "\t"); 
            } 
            System.out.println(""); 
        } 
    } 
} 
 
# java Array  
80    90     
10    20    30    40    50     
60    70    100    

7. Java中的多维数组

int c[][][] = new int[3][4][5]; //更多维依次类推

8. Java中的数组传递与返回

public class Array { 
    public static void main(String args[]) { 
        int score[]= {10, 20, 30, 40, 50, 60}; 
        int tmp[] = changeScore(score); 
        for (int i = 0; i < score.length; i++) { 
            System.out.print(score[i] + "\t"); 
        } 
        System.out.println(""); 
 
        for (int i = 0; i < tmp.length; i++) { 
            System.out.print(tmp[i] + "\t"); 
        } 
        System.out.println(""); 
    } 
 
    public static int[] changeScore(int a[]) { 
        for (int i = 0; i < a.length; i++) { 
            a[i] = 100; 
        } 
        return a; 
    } 
} 
 
# java Array  
100    100    100    100    100    100     
100    100    100    100    100    100    

Java中的数组不用传长度参数了,自带长度属性。应该也不会出现像C中的传参退化的表现。

直接在函数内定义并初始化数组后返回这个数组,在Java代码中应该也是安全的,毕竟数组元素都在堆空间上,和C有较大区别。

public class Array { 
    public static void main(String args[]) { 
        int dst[] = func(); 
        for (int i = 0; i < dst.length; i++) { 
            System.out.print(dst[i] + "\t"); 
        } 
        System.out.println(""); 
    } 
 
    public static int[] func() { 
        int src[]= {10, 20, 30, 40, 50, 60}; 
        return src; 
    } 
} 
 
# java Array  
10    20    30    40    50    60

9. Java类库中完成数组排序与拷贝的方法

public class Array { 
    public static void main(String args[]) { 
        int score[]= {10, 20, 60, 30, 50, 40}; 
        java.util.Arrays.sort(score); //不需要import直接可以使用 
        for (int i = 0; i < score.length; i++) { 
            System.out.print(score[i] + "\t"); 
        } 
        System.out.println(""); 
    } 
} 
 
# java Array  
10    20    30    40    50    60
public class Array { 
    public static void main(String args[]) { 
        int src[]= {10, 20, 30, 40, 50, 60}; 
        int dst[]= {11, 22, 33, 44, 55, 66}; 
        System.arraycopy(src, 1, dst, 2, 4); //将src的下标1开始拷贝4个元素到dst下标为4的位置 
        for (int i = 0; i < dst.length; i++) { 
            System.out.print(dst[i] + "\t"); 
        } 
        System.out.println(""); 
    } 
} 
 
# java Array  
11    22    20    30    40    50    

Java为开发者提供了各种各样的支持,这些类库在 Java Doc 中可以查找到。

10. Java新特性——可变参数

public class Array { 
    public static void main(String args[]) { 
        func(10, 20); 
        func(10, 20, 30, 40); 
    } 
 
    public static void func(int... arg) { //(<type>... <参数列表名>) 
        for (int i = 0; i < arg.length; i++) { 
            System.out.print(arg[i] + "\t"); 
        } 
        System.out.println(""); 
    } 
} 
 
# java Array  
10    20     
10    20    30    40    

和传数组同样的效果,只不过传参方式不同。

11. Java新特性——foreach输出

public class Array { 
    public static void main(String args[]) { 
        int src[]= {10, 20, 30, 40, 50, 60}; 
        func(src); 
    } 
 
    public static void func(int arg[]) { 
        for (int value : arg) { 
            System.out.print(value + "\t"); //此时直接是值,而不是下标了 
        } 
        System.out.println(""); 
    } 
} 
 
# java Array  
10    20    30    40    50    60    

补充:禁止在 foreach 循环里面对元素进行 remove/add 操作,因为可能导致崩溃现象。remove 元素必须使用 Iterator 方式,如果是并发操作,需要对 Iterator 对象加锁。

参考《Java开发实战经典》


本文参考链接:https://www.cnblogs.com/hellokitty2/p/15355104.html