数组

阅读:177

在软件开发中,数据结构和算法是很重要的。如果你是计算机专业出身的,数据结构和算法,肯定是必学的一门课程的。

今天,学习的数组,就是一种重要的数据结构,用来存储同一种类型的集合。

1.数组定义

有如下方式:

  1. int[] i;
  2. int i[];

大多数程序员喜欢第一种方式,因为类型和变量分开了。但是,上面只是声明了数组,i只是个变量,并没有初始化真正的数组。我们使用如下方式初始化:

  1. int[] i = new int[100];

  2. int[] j = {1,2,3,4};

  3. int[] j = new int[] {1, 2, 3, 4}

     

数组的下标是从0开始,1中下标从0-99。

对于1创建了一个空数组,所有的元素初始化为0。boolean初始化为false,如果是个对象,比如String数组,初始化为特殊值null。

那怎么访问数组呢?

对于2,我们访问第二个元素,通过j[1],结果为2.

为数组赋值:

比如对i第一个值赋值为3,通过i[0] = 3;

如果访问的下标超过了数组的范围,会出现什么问题?

会报数组越界异常。

注意:

  1. 数组一旦创建,大小就不能改变。

  2. Java允许创建长度为0的数组,这个是非常有用的设计,不是null,在遍历和使用数组时不会报空指针异常。

2.遍历数组

for循环,while循环都可以遍历数组。这里以for循环举例,定义一个数组,计算数组所有值的和,代码如下:

public class ArrTest {
    public static void main(String[] args) {

        int[] j = {1, 2, 3, 4};
        int ret = 0;
        for (int i = 0; i < j.length; i++) {
            ret += j[i];
        }

        System.out.println(ret);
    }
}

输出结果为:10。

之前讲过,在JDK5,提供了增强的for循环,那我们用增强for循环,代码如下:

public class ArrTest {
    public static void main(String[] args) {

        int[] j = {1, 2, 3, 4};
        int ret = 0;
        for (int i : j) {
            ret += i;
        }

        System.out.println(ret);
    }
}

增强for循环,更加简洁,不需要使用下标。但是如果你需要使用下标,增强for循环可能就不能满足需求。

3.多维数组

多维数组使用多个下标访问元素,适合更复杂的结构。比如我们定义一个二维数组,代表不同班级的学生,遍历并打印出来,代码如下:

public class ArrsTest {

    public static void main(String[] args) {

        String[][] students = new String[][]{
                {"zs", "ls"},
                {"ww", "zl"}
        };

        for (int i = 0; i < students.length; i++) {
            for (int j = 0; j < students[i].length; j++) {
                System.out.println(students[i][j]);
            }
        }
    }
}

打印结果如下:

zs
ls
ww
zl

注意:实际上Java没有多维数组,只有一维数组,多维数组是"数组的数组"组合而成的。

最后,请实现冒泡和选择排序。


© 版权归知否网(zhifou.net)所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权知否网将依法追究其法律责任。
读后有收获,请作者喝杯咖啡

精彩留言

发表评论
更多精彩内容,请关注微信公众号