Java中的数组

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开发实战经典》

posted on   Hello-World3  阅读(69)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示