java数组+原理代码注释详解

数组的定义与使用

本节目标

  1. 理解数组基本概念
  2. 掌握数组的基本用法
  3. 数组与方法互操作
  4. 熟练掌握数组相关的常见问题和代码

1. 数组基本用法

1.1 什么是数组

数组本质上就是让我们能 “批量” 创建相同类型的变量.
例如:
如果需要表示两个数据, 那么直接创建两个变量即可 int a; int b
如果需要表示五个数据, 那么可以创建五个变量 int a1; int a2; int a3; int a4; int a5;
但是如果需要表示一万个数据, 那么就不能创建一万个变量了. 这时候就需要使用数组, 帮我们批量创建.
注意事项: 在 Java 中, 数组中包含的变量必须是 相同类型

1.2 创建数组

基本语法

// 动态初始化
数据类型[] 数组名称 = new 数据类型 [] { 初始化数据 };
// 静态初始化
数据类型[] 数组名称 = { 初始化数据 }

代码示例

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

注意事项: 静态初始化的时候, 数组元素个数和初始化数据的格式是一致的.
其实数组也可以写成
int arr[] = {1, 2, 3};
这样就和 C 语言更相似了. 但是我们还是更推荐写成 int[] arr 的形式. int和 [] 是一个整体.

1.3 数组的使用

代码示例: 获取长度 & 访问元素

public class TestDemo {
    public static void main(String[] args) {
        int [] array = {1,2,3,4};
        int len = array.length;
        System.out.println(len);
    }

代码示例: 遍历数组
所谓 “遍历” 是指将数组中的所有元素都访问一遍, 不重不漏. 通常需要搭配循环语句

public class TestDemo {
    public static void main(String[] args) {
        int [] array = {1,2,3,4};
       /* int len = array.length;
        System.out.println(len);*/
        for (int i = 0; i < array.length ; i++) {
            System.out.println(array[i]);
        }
    }
}
/**
 * // 执行结果
 * 1
 * 2
 * 3
 *
 */

代码示例: 使用 for-each 遍历数组

int[] arr = {1,2,3,4};
for (int x : arr) {
System.out.println(x);
/**
 * // 执行结果
 * 1
 * 2
 * 3
 * 4
 */

for-each 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错
代码示例: 下标越界

int[] arr = {1, 2, 3};
System.out.println(arr[100]);
// 执行结果
//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
//at Test.main(Test.java:4)

抛出了 java.lang.ArrayIndexOutOfBoundsException 异常. 使用数组一定要下标谨防越界.

2. 数组作为方法参数

2.1 基本用法

代码示例: 打印数组内容

public  static  void printArray(int[] arr){
        for (int x:arr) {
            System.out.println(x+ " ");
        }
    }

    public static void main(String[] args) {
        int[] array = {1,2,3,4};
        printArray(array);
        /**
 * // 执行结果
 * 1
 * 2
 * 3
 * 4
 */

在这个代码中
1.int[] a 是函数的形参, int[] arr 是函数实参.
2.如果需要获取到数组长度, 同样可以使用 a.length

2.2 理解引用类型(重点/难点)

我们尝试以下代码
代码示例1 参数传内置类型

public static void main(String[] args) {
int num = 0;
func(num);
System.out.println("num = " + num);
}
public static void func(int x) {
x = 10;
System.out.println("x = " + x);
}
// 执行结果
//x = 10
//num = 0

我们发现, 修改形参 x 的值, 不影响实参num的值
代码示例2: 参数传数组类型

public static void func(int[] a) {
a[0] = 10;
System.out.println("a[0] = " + a[0]);
}

public static void main(String[] args) {
int[] arr = {1, 2, 3};
func(arr);
System.out.println("arr[0] = " + arr[0]);
}
// 执行结果
//a[0] = 10
//arr[0] = 10

我们发现, 在函数内部修改数组内容, 函数外部也发生改变.
此时数组名 arr 是一个 “引用” . 当传参的时候, 是按照引用传参

2.3 认识 null

null 在 Java 中表示 “空引用” , 也就是一个无效的引用

3. 数组作为方法的返回值

代码示例: 写一个方法, 将数组中的每个元素都*2

import java.util.Arrays;
public class TestDemo {
public  static int[] func(int[] array){
    int[] tmp = new int[array.length];
    for (int i = 0; i < array.length; i++) {
        tmp[i] = array[i] * 2;
    }
    return tmp;
}

    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7,};
        int[] ret = func(array);
        System.out.println(Arrays.toString(ret));
    }
}
//执行结果
//[2, 4, 6, 8, 10, 12, 14]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值