Java基础第五天(数组)

本文详细介绍了Java中的数组,包括数组的定义、内存图解、常见操作以及数组在方法中的使用。讲解了数组的三种定义方式,如何通过索引访问元素,以及数组遍历、查找最大值和反转的方法。同时,提到了数组作为方法参数和返回值的注意事项,并对可能出现的异常进行了说明。
摘要由CSDN通过智能技术生成

数组

引入:容器的概念
容器:可以保存多个数据的东西
1.数组概述
a.什么是数组
数组就是一种容器
b.数组的特点:
a.保存的数据的数据类型必须是一致
b.数组的长度是固定的!!!
元素:数组中的数据,一般我们专业成为元素
2.数组的定义格式
a.定义格式1: 我们指定数组的长度,数组中元素的值由系统赋默认值
数据类型[] 数组名 = new 数据类型[长度];
b.详细介绍
i.数据类型: 数组中每个元素的类型
ii.[]: 代表数组
iii.数组名: 我们程序员给数组起的名字(标识符)
iv.new :固定,代表创建一个新的数组
v.长度: 指的是数组中元素的个数

举例:定义一个数组,保存我们每个人的考试成绩
double[] scores = new double[69];
举例:定义一个数组,保存我们每个人的年龄
int[] scores = new int[69];
[系统默认值和数据类型有关]
整数类型: 默认值就是0
浮点数类型: 默认值就是0.0
字符类型: 默认值是空格
布尔类型: false
引用类型: null

c.定义格式2: 我们指定数组每个元素的值,长度由系统自己计算
数据类型[] 数组名 = new int[]{值1,值2,值3,…..};
举例: 定义数组,保存1-10
int[] nums = new int[]{1,2,3,4,5,6,7,8,9,10};
这种定义方法不允许指定长度,哪怕是对的,编译也会报错
d.定义格式3: 语法糖,格式更加简洁,但是底层原理还是和定义格式2一样
数据类型[] 数组名 = {值1,值2,值3,…..};
举例:定义数组,保存 5个1-10的随机数
int[] nums = {3,5,7,9,1};

3.通过索引访问数组的元素
a.什么是索引
数组中的每个元素都有一个编号,这个编号专业成为索引(下标,角标,英文名Index)
注意:index是从0开始的
比如: 有一个int[] 数组名的长度为10的数组
那么最后一个元素的索引是 9

b.访问元素的格式
固定格式:
数组名[索引]

c.数组的长度属性
固定格式:
数组名.length

d.练习通过索引访问数组的元素(代码演示)

数组原理内存图

1.内存的介绍
内存:存放运行时的数据
硬盘:持久保存数据
2.Java虚拟机内存划分
五大区!!
栈(stack): 保存(局部)变量,运行方法
堆(heap): 保存new出来的东西
方法区(method area):保存.class文件
本地方法区: 和系统相关
寄存器区: 和CPU相关
3.数组的内存图解(一个数组)
4.数组的内存图(两个数组)
5.数组的内存图解(两个数组变量名指向同一个数组)

数组的常见操作

1,数组越界异常
ArrayIndexOutOfBoundsException:数组越界异常
解决方法:
修改源代码,修改那个越界的索引
2.数组空指针异常
NullPointerException:空指针异常
产生原因:清空了数组名保存的地址值,但是又去访问数组
解决方案:
如果还要访问数组的元素,那么就不要清空地址
如果不需要访问数组的元素,那么清空地址

3.数组遍历(重点!!!!)
a.什么叫遍历
把数组中的所有元素都获取一遍

b.遍历的标准代码

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

4.获取数组最大值/最小值

//1选一个元素 作为最大值
            int max = nums[0];
            //2.依次取出后面的元素 和 max做比较
            for(int i = 1;i < nums.length; i++){
                //nums[i] 和 max做比较
                    if (nums[i] > max) {
                        //元素比max大,那么新元素作为最大值
                        max = nums[i];
                    }
            }
            //3.最后剩下就是最大值
            System.out.println("最大值:"+max);

5.数组的反转

int[] nums = {4,3,5,6,1,8,13,10,15,17};
                    //反转数组,使用While
                //        //1.定义两个索引
                //        int min = 0;
                //        int max = nums.length - 1;
                //        //2.循环,交换元素,并且min++,max--
                //        while (min < max) {
                //            //当小索引 比 大索引小的时候
                //            // nums[min] 和  nums[max]
                //            int temp = nums[min];
                //            nums[min] = nums[max];
                //            nums[max] = temp;
                //            //小索引++ ,大索引--
                //            min++;
                //            max--;
                //        }
                    //3.使用for循环
                    for (int min = 0,max = nums.length-1;min < max;min++,max--){                                    int temp = nums[min];
                            nums[min] = nums[max];
                            nums[max] = temp;
                    }
                    //4.测试数据打印
                    for (int i = 0; i < nums.length; i++) {
                            System.out.print(nums[i] + " ");
                    }

数组作为方法的参数和返回值

1.数组作为参数(代码实现)
当方法的参数比较多的时候,可以选择使用数组作为方法的参数
但是这些参数必须保证数据类型是一致的

2.数组作为返回值(代码实现)
当一个方法需要返回值多个值的时候,必须选择数组作为方法的返回值
但是这些返回值必须保证数据类型是一致的

[有时间扩展]方法的参数类型区别

a.参数基本类型
基本类型作为方法参数时,
形参改变 不会影响实参
b.参数引用类型
引用数据类型作为方法的参数时,
形参的改变会影响实参

总结:

  • [ ] 理解容器的概念

  • [ ] 掌握数组的第一种定义方式
    int[] nums = new int[10];

  • [ ] 掌握数组的第二种定义方式
    int[] nums = new int[]{1,2,3,4,5};
  • [ ] 掌握数组的第三种定义方式
    int[] nums = {1,2,3,4,5}
  • [ ] 使用索引访问数组的元素
    索引:数组中元素的编号,默认从0开始
    访问格式:
    数组名[索引] = 值;//赋值
    数据类型 变量名 = 数组名[索引];//取值
    - [ ] 了解数组的内存图解
    - [ ] 了解空指针和越界异常
    - [ ] 掌握数组的遍历
    - [ ] 掌握数组最大值的获取
    - [ ] 了解数组反转的原理
    - [ ] 了解数组作为方法参数传递
  • [ ] 了解数组作为方法的返回值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值