java入门第六天~数组

数组

1.一维数组

为什么要有数组

​ 现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦。为了解决这种问题,Java就提供了数组供我们使用。

结论:
数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致

1.01数组概述和定义格式说明

1.数组概念
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型(四类八种),也可以存储引用数据类型(内存地址)。(包含数组,类,接口。简单点,也就是说,new出来的数据就是引用数据类型。)

数组定义完之后,每个元素会分配有索引(角标)从0开始。

2.数组定义格式
格式1: 数据类型[] 数组名;
格式2: 数据类型 数组名[];

推荐使用第一种定义方式。

1.02数组的初始化动态初始化

什么是数组的初始化

​ Java中的数组必须先初始化,然后才能使用。
​ 所谓初始化:就是数组中的数组元素分配内存空间,并为每个数组元素赋值

初始化的分类:
动态初始化: 只指定长度,由系统给出初始化值。
静态初始化: 给出初始化值,由系统决定长度。

注意事项: 这两种方式,只能使用一种,不能进行动静结合。

动态初始化的格式:

​ 数据类型[] 数组名 = new 数据类型[数组长度];
​ 数组长度其实就是数组中元素的个数。

例如:

public static void main(String[] args) {
   
    int[] arr=new int[3];
    System.out.println(arr); //打印数组的地址值。
    arr[0]=10;
    arr[1]=20;
    arr[2]=30;

    int num=arr[0];
    System.out.println(num);
    System.out.println(arr[1]);
    System.out.println(arr[2]);

}
  • 数组有一个属性,叫做length 可以获取数组的长度 int len=arr.length;

    数组中最后一个元素的索引=数组长度-1;

1.03数组的初始化静态初始化

静态初始化的格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例: int[] arr = new int[]{1,2,3};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
举例: int[] arr = {1,2,3};

1.04 Java中的内存分配以及栈和堆的区别

Java虚拟机在执行Java程序的过程中会把它管理的内存划分成若干个不同的数据区域

1.栈: 存放的是局部变量
局部变量:在方法定义中或者方法声明上的变量都是局部变量。

​ 局部变量属于方法,随着方法的调用,而产生,随着方法的调用完毕而消失。

补充方法定义和方法声明

2.: 存放的是所有new出来的东西。

​ a: 每一个new出来的东西都会为其分配一个地址值。

​ b: 每一个变量都有一个默认的值
​ byte,short,int,long – 0
​ float,double – 0.0
​ char – ‘\u0000’
​ boolean – false
​ 引用数据类型 – null
​ c: 使用完毕就变成了垃圾,等待垃圾回收器对其回收。

1.04数组的遍历:

public static void main(String[] args) {
   
    int[] arr3 = {
   20, 30, 40, 50};
    System.out.println(arr3[0]);
    System.out.println(arr3[1]);
    System.out.println(arr3[2]);
    System.out.println(arr3[3]);
    //数组中最后一个元素的索引=数组长度-1
    System.out.println(arr3[arr3.length-1]);


    System.out.println("=================================");
    //数组的遍历。

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

    System.out.println("===========================================");
    //反向遍历
    for (int i =arr3.length-1;i>=0;i--) {
   
        System.out.println(arr3[i]);
    }
}

1.05数组操作的两个常见小问题越界和空指针

1:ArrayIndexOutOfBoundsException: 数组索引越界异常
原因:你访问了不存在的索引。
2:NullPointerException: 空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。

1.06例题

例题1:定义一个数组,输出数组名称和数组中的元素值,给数组赋值,再次输出数组名称和数组中的元素值。

public static void main(String[] args) {
   
    int[] arr=new int[4];
    System.out.println(arr);//输出数组的地址
    arr[0]=12;
    arr[1]=5;
    arr[2]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值