JAVA数组

一、概述

数组是什么
数组就是一一个容器,用来存储一批同种类型的数据。(有点类似PLC中的一个DB块
例子
int[] arr = {20,10,80,60,90};
String[ names= {"牛二", "西门", "全蛋"};

二、数组的定义和访问

1.静态初始化数组

1.1定义数组的时候直接给数组赋值。
静态初始化数组的格式:
// 完整格式
数据类型[] 数组名= new数据类型[]{元素1,元素2,元素3... }
int[] ages = new int[]{12, 24,36}
double[] scores = new doub1e[]{89.9, 99.5, 59.5, 88.0};
//简化格式
数据类型[] 数组名= {元素1,元素2,元素3, .. };
int[] ages = {12, 24, 36};
注意
数据类型[] 数组名”也可写成“数据类型 数组名[]"。
●什么类型的数组只能存放什么类型的数据。

数组在计算机中的基本原理

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

1.2 数组的访问

数组名[索引]

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

//赋值 arr[2] = 100; System.out.println(arr[2]); // 100

组的长度属性:

length //获取数组的长度(就是数组元素的个数)

System.out. println(arr.1ength); 

问题:数组的最大索引可以怎么表示?
数组名.length - 1 //前提:元素个数大开0

1.3 数组的遍历

1.什么是遍历?
●一个一个的访问一遍容器中的数据。
2.如何遍历数组---快捷键:ages.fori+enter
int[] ages = {20,30,40,50};
for (int i = 0; i < ages.length; i++) {
System.out.println(ages[i]);
}

2.动态化存储数组

1定义数组时先不存入具体的元素值,只确定数组存储的数据类型和数组的长度
数组的动态初始化格式:
数据类型[]  数组名= new数据类型[长度];
int[] arr = new int[3];
//后赋值
arr[0] = 10;
System.out.println(arr[0]); // 10
温馨提示
●静态初始化和动态初始化数组的写法是独立的,不可以混用。

2.动态初始化数组后元素的默认值是什么样的?
●byte、 short、int、char、long类型数组的元素默认值都是0
●float、 double类型数组元素的默认值都是0.0
●boolean类型数组的元素默认值是false、String类型数组的元素的默认值是null
3、两种数组定义的方法各自适合什么业务场景?
●动态初始化:适合开始不确定具体元素值,只知道元素个数的业务场景。比如:记录评委打分

三、数组在计算机中的执行原理

Java内存分配介绍
●方法区:编译后的class文件
●栈:普通变量(具体值)、数组名(内存地址)、
●堆:new 定义的元素

●本地方法栈
●程序计数器

1、多个数组变量,指向同一个数组对象的原因是什么?需要注意什么?
●多个数组变量中存储的是同一个数组对象的地址。
●多个变量修改的都是同一个数组对象中的数据。
2、如果某个数组变量中存储的null,代表什么意思?需要注意什么?
●代表这个数组变量没有指向数组对象。
●可以输出这个变量,但是不能用这个数组变量去访问数据或者访问数组长度,会报空指针异常: NullPointerException。

四、专项训练:数组常见案例

1、数组求最值

●把数据拿到程序中去,用数组装起来。
●定义一个变量max用于记录最大值,max变量默认存储了第一个元素值作为参照物。
●从第二个位置开始遍 历数组的数据,如果当前元素大于变量存储的数据,则替换变量存储的值为该元素。
●循环结束后输出max变量即可。

2、数组反转:临时变量很重要

package com.itheima.defien;

public class ArrayDemo1 {
    public static void main(String[] args) {
        int[] ages = new int[]{12,24,36,40,59};
        for (int i = 0, j = ages.length - 1; i < j; i++,j--) {
            int temp = ages[j];
            ages[j] = ages[i];
            ages[i] = temp;

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

    }
}

3、随机排名

需求
●某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
分析.
●在程序中录入5名员工的工号存储起来一>使用动态初始化数组的方式。
●依次遍历数组中的每个数据。
●每遍历到一个数据,都随机-个索引值出来,让当前数据与该索引位置处的数据进行交换。

package com.itheima.defien;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;

public class ArrayDemo2 {
    public static void main(String[] args) {
        int[] codes =new int[5];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
            System.out.println("请输入当前第" +(i+1)+ "个员工的工号:");
            int code = sc.nextInt();
            codes[i] = code;

        }
        Random r =new Random();
        for (int i = 0; i < codes.length; i++) {
        int index =r.nextInt(codes.length);
        int temp = codes[index];
        codes[index] = codes[i];
        codes[i] = temp;
        }
        for (int i = 0; i < codes.length; i++) {
            System.out.println(codes[i]);
        }
    }
}

●定义一个动态初始化的数组用于录入员工的工号。
●遍历数组中的每个元素。
●每遍历到一 个数据,都随机- -个索引值出来,让当前数据与该索引位置处的数据进行交换。
●输出数组中的内容即可。

五、补充知识: Debug工具的使用

Debug工具
●IDEA自带的断点调试工具,可以控制代码从断点开始一行一行的执行,然后详细观看程序执行的情况。
DEBUG工具基本使用步骤
①在需要控制的代码行左侧,点击一下,形成断点
②选择使用Debug方式启动程序,启动后程序会在断点暂停
③控制代码一行一行的往下执行

六、总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值