【Java】数组

 数组

        数组就是用来存储一批同种类型数据容器

例:

int[] arr ={10,20,30,40};

String[] names = {"大珍珠","小珍珠","黑珍珠","白珍珠"};

静态初始化数组

        定义数组的时候直接给数组赋值

完整格式:

数据类型[] 数组名 = new 数据类型[] {元素1,元素2,元素3...};

例:double[] scores = new double[]{20.5,12.5,30.8,50.8};

例:int[] ages = new int[]{12,18,23};

简化格式

数据类型[] 数组名 = {元素1,元素2,元素3...};

例:int[] ages ={18,25,28};

public class ArrayDemo {
    public static void main(String[] args) {
//        完整格式: 定义类型[] 名称 = new 定义类型{}
double[] d = new double[]{12.2,12.3,12.4,12.5};

int[] i = new int[]{12,13,14,15,16};

String[] s = new String[]{"大珍","小珍","黑珍"};

//        简化格式: 定义类型[] 名称 = new 定义类型{}
double[] d1 ={12.2,12.3,12.4,12.5};

int[] i1 ={12,13,14,15,16};

String[] s1 ={"大珍","小珍","黑珍","白珍"};
    }
}

注意:数组变量名存储的是数组在内存中的地址,数组是引用类型

[ :代表数组 I :代表类型 @ :代表16进制位置

数组的访问

定义一个数组:

int[] i = new int[]{10,20,30,40};

取值:

System.out.println(arr[0]);//10

赋值

arr[1] = 100;

System.out.println(arr[1]);//100

数组的长度属性:

System.out.println(arr.length);

数组的最大索引:

arr.length-1

public class ArrayDemo {
    public static void main(String[] args) {
//        数组的两种形式
        int[] age ={12,34,56};
        int age1[] ={12,34,56};
        
//        定义什么类型就是什么类型
//        错误:int[] i ={1,2,3,"123"};
        
//        数组一旦定义出来类型的数据,程序执行的过程中,长度,类型就固定了
        int[] j = {1,2,3,4,5,6};
        System.out.println(j.length);
    }
}

数组的几个注意事项

注意:

        "数据类型[] 数组名" 也可以写成"数据类型 数组名[]"

        什么类型的数组存放什么类型的数据,否则报错

        数组一旦定义出来,程序执行的过程中,长度,类型就固定

动态初始化数组

        定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据

数组的动态初始化格式:

数据类型[] 数组名 = new 数据类型[长度];

例:int[] arr = new int[3];

public class ArrayDemo {
    public static void main(String[] args) {
        int[] i = new int[10];
        i[1] = 10;
        System.out.println(i[1]);//10
        System.out.println(i[2]);//0
    }
}

 动态初始化数组的元素默认值

元素默认值规则

public class ArrayDemo {
    public static void main(String[] args) {
        int[] i = new int[5];
//        char底层也是0

        double[] d = new double[5];

        boolean[] b = new boolean[5];

        String[] s = new String[5];

        System.out.println(i[1]);//0
        System.out.println(d[1]);//0.0
        System.out.println(b[1]);//false
        System.out.println(s[1]);//null
    }
}

两种初始化的使用场景总结

静态初始化开始存入元素值,适合一开始就能确定元素值的业务场景

动态初始化只指定数组长度,后期赋值,适合知道开始数据的数量,但是不确定具体元素值的业务场景

两种格式的写法是独立的,不能混用 

数组的遍历

        遍历就是一个一个数据的访问

为什么要遍历:因为要值的索引查找数据等等操作

public class ArrayDemo {
    public static void main(String[] args) {
        int[] i = new int[]{10,20,30,40,50};
        
//			快捷方式 i.fori
        for (int j = 0; j < i.length; j++) {
            System.out.println(i[j]);
        }
    }
}

数组使用的常见问题

访问的元素位置超过最大索引:

        执行时会出现ArrayIndexOutOfBoundsException

数组变量中没有存储数组的地址,而是null:

        在访问数组信息时会出现NullPointerException

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值