day05【数组】

day05【数组】

一. 数组的定义(重点)

  • 容器: 存放多个数据

**数组的概念: ** 是一个容器, 用来存放同一种数据类型的多条数据, 长度是固定的.

1. 如何定义数组

(1) 第一种格式
数据类型[] 数组名 = new 数据类型[长度];
// 必须制定长度, 长度是固定的.
// 等号左右的数据类型必须是相同的

适用于只知道数组的长度, 还不知道内容, 具体的内容, 下面再赋值

(2) 第二种格式
数据类型[] 数组名 = new 数据类型[] {元素1, 元素2, 元素3 ...};
// 中括号中不要写长度

适用于创建数组的时候, 已经知道数组中要存放什么元素, 就直接把元素放到数组中.

(3) 第三种格式

是第二种的简化形式

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

二. 数组的使用(重点)

1. 数组的索引(角标, 下标)

  • 对数组中每一个位置的元素进行编号,

    • 从0开始, 从第一个元素开始进行编号

    [外链图片转存失败(img-Wq3HPEaC-1564289736517)(assets/1563329597513.png)]

2. 使用索引

格式

数组名[索引] : 获取数组中指定索引位置的元素.

操作格式

  • 对这个索引位置的元素进行赋值.
数组名[索引] =;
// 将等号右边的值, 赋值给等号左边数组中指定索引位置.
  • 输出打印数组中指定索引位置的元素
System.out.println(数组名[索引]);
  • 将数组中指定索引位置的元素, 赋值给其他的变量
数据类型 变量名  =  数组名[索引];

3. 数组的长度

数组名.length
第一个元素的索引: 0
最后一个元素的索引: 数组名.length - 1

三. 内存图(了解)

数组: 引用数据类型

基本数据类型: 4类8种

引用数据类型: 除了基本数据类型以外, 其他都是引用数据类型.

四. 数组的操作(数组值交换时应该用带索引交换,不能直接用数值交换)

1. 数组使用时遇到的异常

(1) 数组索引越界异常
  • 产生的原因: 访问了不存在的索引

[外链图片转存失败(img-E7DJTvk6-1564289736521)(assets/1563332879628.png)]

(2) 空指针异常
  • 产生的原因: 使用了null数组

[外链图片转存失败(img-zTl8Tcpf-1564289736521)(assets/1563333190235.png)]

2. 数组的遍历(重点)

  • 遍历: 获取数组中的每一个元素
int[] arr = {1, 2, 3, 4, 5};
/*
	遍历: 获取数组中的每一个元素
	arr[0], arr[1], arr[2], arr[3], arr[4]
			↓
		获取数组中的每一个索引
			↓
	  索引是从0开始, 到长度 - 1
	  		↓
	  for循环, 可以获取从n开始到m
	  		↓
让for循环中i的变化量, 和数组的索引一一对应

*/
// 让for循环中i的变化量, 和数组的索引一一对应
// 0 ~ arr.length - 1
for (int i = 0; i < arr.length; i++) {
    // 将i当成数组的索引
    System.out.println(arr[i]);
}

3. 数组获取最大值

public class Demo02_获取最大值 {
    public static void main(String[] args) {

        int[] arr = {5, 15, 2000, 10000, 100, 4000};
        // 定义变量, 用来记录临时最大值
        // max的初始值, 设置为数组中第一个元素
        int max = arr[0];
        // 遍历
        // 为了提高效率, 将i初始值设置为1
        for (int i = 1; i < arr.length; i++) {
            // 比较
            // 如果遍历出来的元素(arr[i]), 比临时最大值(max)还大
            if (arr[i] > max) {
                // 将遍历出来的元素, 赋值给临时最大值
                max = arr[i];
            }
        }

        System.out.println("最大值为: " + max);

    }
}

4. 数组的反转

public class Demo03_数组的反转 {
    public static void main(String[] args) {

        int[] arr = {1, 2, 3, 4, 5, 6, 7};

        // 交换
        for (int i = 0; i < arr.length / 2; i++) {
            // 交换的是  i  ~ arr.length - 1 - i
            // 交换的规律: 首尾相连
            // 定义第三方变量
            int temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = temp;
        }

        // 遍历打印
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }


    }
}

五. 数组作为方法的参数和返回

数组:  数据类型[]
int[] : 是一种引用数据类型
int: 是一种基本数据类型
intint[]使用上是相同的
int可以作为方法的参数和返回
int[]可以作为方法的参数和返回
  • 数组作为方法的参数
package com.itheima._06reference;

public class Demo01 {
    public static void main(String[] args) {


        int i = 10;
        fun1(i);


        int[] arr = new int[3];
        show(arr);

        int[] arr2 = {10, 20, 30};
        show(arr2);

    }

    public static void fun1(int a) {

    }

    /**
     * 此方法, 用于打印数组
     * @param ints
     */
    public static void show(int[] ints) {
        for (int i = 0; i < ints.length; i++) {
            System.out.println(ints[i]);
        }
    }

}

  • 数组作为方法的返回值
package com.itheima._06reference;

public class Demo02 {
    public static void main(String[] args) {

    }

    public static int fun1() {
        int a = 10;
        return a;
    }

    public static int[] fun2() {

        int[] arr = {1, 2, 3, 4};

        return arr;
    }
}

  • 数组作为参数的面试题
package com.itheima._06reference;

public class Demo03_面试题 {
    public static void main(String[] args) {
        int a = 10;
        fun1(a);
        System.out.println("a = " + a); // 10

        int[] arr = {10};

        fun2(arr);

        System.out.println(arr[0]); // 888
        
            /**
     * null 和 空数组
     int[] arr = {};
     System.out.println(arr.length); // 0

     int[] arr2 = null;
     System.out.println(arr2.length); // NUllPointerException
     */
    }



    public static void fun1(int n) {
        n += 10000;
        System.out.println("n = " + n); // 10010
    }

    public static void fun2(int[] ints) {
        // 修改ints
        ints[0] = 888;
        System.out.println(ints[0]); // 888
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值