Java语言基础(五)之数组

1、案例分析

       现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有50名员工,用前面所学的知识,程序首先需要声明50个变量来分别记住每位员工的工资,然后在进行操作。这样做会显得很麻烦,而且错 误率也会很高。
      因此:我们需要用一个容器,来存储大量的相同数据类型的数据,如上述的员工工资。

2、数组概念:

数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。

2.1 数组的定义(定义之后生成在栈内存中)

格式一:数组存储的数据类型[] 数组名字;
例如:int[] array;

解释:定义了一个int类型的数组,数组名叫array

格式二:数组存储的数据类型 数组名字[];
例如:int array[];

解释:定义了一个int类型的数组,数组名是array数组
2.2 数组的初始化
2.2.1 数组初始化概述
      1、Java中的数组必须先初始化,然后才能使用,初始化就是给数组元素分配内存空间,为数组中的元素赋值。

2.2.2 初始化格式
     1、动态初始化
     格式一:数组存储的数据类型[] 数组名字 = new 数组类型[长度];

例如:int[] array = new int[2];//定义长度为2的数组

格式详细分析:

数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[ ] : 表示数组。
数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。
new:关键字,创建数组使用的关键字。
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[长度]:数组的长度,表示数组容器中可以存储多少个元素。
重点:数组有定长特性,长度一旦指定,不可更改。

注意:动态初始化,不同类型的数组的默认值不一样:

byte,short,int,long,数组的默认值为0 f
loat,double型的,数组默认值为0.0
char,数组的默认值为’\u0000’
boolean,数组的默认值为false
引用类型(类,接口,数组),数组的默认值为null

      2、静态初始化
格式一:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};

例如:int[] array = new int[]{1,2,3};

格式二:数据类型[] 数组名 = {元素1,元素2,元素3…};

例如:int[] array = {1,2,3};

3、数组的访问
3.1 数组变量的访问方式
   1、数组变量访问方式
        格式:数组名
   2、数组内部保存的数据的访问方式:
        格式:数组名[索引]
        索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
        比如:体育课集合报数的时候,每一排左边第一名同学说1,然后右边一名同学说2…

注意:
1、索引是从0开始的
2、索引是连续的
3、索引是逐一增加的,每次增加1
4、不能操作数组最大索引(最大索引 = 数组长度 - 1)
数组长度 = 数组名.length
3.1.1 代码实例:

public class test {
   
    public static void main(String[] args) {
   
        int[] array01 = {
   2, 3, 7, 2, 0};
        //访问并输出数组array01
        System.out.println(array01);// [I@1b6d3586 (是地址)
        //访问并输出数组array01中的第一个元素
        System.out.println(array01[0]);
        //数组长度
        System.out.println(array01.length);
    }
}

4、java中的内存分配
     4.1 java程序在运行时,需要在内存中分配空间,为了提高运算效率,就对内存空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
     4.2 图解数组在内存中的分配

int[] array01 = new int[3];
System.out.println(array01);
System.out.println(array01[0]);
System.out.println(array01[1]);
System.out.println(array01[2]);
在这里插入图片描述
Ps:栈内存是存放基本类型的变量,对象的引用和方法调用;堆内存用于存放由new创建的对象和数组。
解释:
1、System.out.println(array01);输出 [I@1b6d3586
      [I@1b6d3586就是001的内存地址
2、 System.out.println(array01[0]);
       System.out.println(array01[1]);
       System.out.println(array01[2]);
先在堆内存中找到地址001,然后找到对应的索引,最后输出索引对应的值
3、 栈内存:存储局部变量
4、 堆内存:存储new出来的内容(实体,对象),每一个new出来的东西都有一个地址,使用完毕,等待垃圾回收器回收。

4.3 局部变量
定义在方法中的变量,例如array01,使用完立即消失。
4.4、两个变量指向同一个地址

public class test {
   
    public static void main(String[] args) {
   
        // 定义数组,存储3个元素
        int[] arr = new int[3];
        //数组索引进行赋值
        arr[0] = 5;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱鱼的可爱喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值