Java数组的定义与使用

本文介绍了Java中的数组,包括数组的基本概念、创建方式和使用方法,如获取长度、访问元素及遍历。还讨论了数组作为方法参数时的引用传递特性,以及null在Java中的意义。通过对数组深入理解,有助于更好地掌握Java编程。
摘要由CSDN通过智能技术生成

前言:

作为虚拟世界中的原始人的我,在上文中不仅会制造工具(数据类型与逻辑控制语句组合)了,还可以做出可以多次使用的工具(方法)。但是我应该怎样批量做出同种工具,哪就需要批量的对“物质”进行存储,就像现实世界中,收集好大量的煤炭,干柴一样,在这片虚拟世界中,我也可一收集大量的整形、浮点型进存储,处理,即用数组。倘若我进入工业时代,有该如何批量生产呢?

一、数组的基本使用

1.数组是什么?

  • 具有相同数据类型的集合,即为数组,当要批量创建或者处理多个数据时,就可以把它们定义成一个数组。然后对这个数组进行操作。

2.创建数组

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

// 动态初始化
int[] arr = new int[]{1, 2, 3};
// 静态初始化
int[] arr = {1, 2, 3};```

3.数组的使用

(1) 获取长度 & 访问元素

  • 数组名.length。得到数组长度
  • 数组名[i]。获取数组元素
int[] arr = {1, 2, 3}; 
// 获取数组长度 
System.out.println("length: " + arr.length); // 执行结果: 3 
// 访问数组中的元素
 System.out.println(arr[1]); // 执行结果: 2 
 System.out.println(arr[0]); // 执行结果: 1 
 arr[2] = 100; System.out.println(arr[2]); // 执行结果: 100

(2) 下标越界

  • 下标访问操作不能超出有效范围 [0, length - 1] , 如果超出有效范围, 会出现下标越界异常
int[] arr = {1, 2, 3};
 System.out.println(arr[100]); 
// 执行结果 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100 at Test.main(Test.java:4)

(3) 遍历数组

  • for循环遍历数组
int[] arr = {1, 2, 3}; 
for (int i = 0; i < arr.length; i++) { 
System.out.println(arr[i]); }
// 执行结果 123
  • for-each(增强for循环)遍历数组
int[] arr = {1, 2, 3}; for (int x : arr) {
 System.out.println(x);
  }
 // 执行结果 123
  • Arrays.toString( 数组名),将数组一字符串形式输出。
int[] array4={1,2,3,4,5,6,7,8,9,10};
System.out.println(Arrays.toString(array4));

二、数组作为方法的参数

1. 方法打印数组

  • int[] a 是函数的形参, int[] arr 是函数实参.
public static void main(String[] args) {
        int[] array6={1,2,3,4,5,6,7,8,9,10};
        printarray(array6);
    }
    public static void printarray(int[] arr6){
        for (int i:arr6) {
            System.out.print(i);
        }
    }

2. 理解引用

(1)

  • 我们知道方法中的形参实际上对实参的复制,即按值传参。
  • Java中没有指针的概念,但是也可以按址传参,又叫按引用传参。
  • 在c语言中数组是首元素的地址名,所以Java也可通过数组来按址传参。

(2)改变对象,可理解成改变了地址,所以此时形参的值改变,不会使实参的值改变。

 public static void main(String[] args) {
        int[]  array7={1,2,3,};
        System.out.println(Arrays.toString(array7));
        func1(array7);
        System.out.println(Arrays.toString(array7));
    }
    public static void func1(int[] array7) {
         array7= new int[]{4, 5, 6};
    }
    //执行结果:
    [1,2,3]
    [1,2,3]
  • 以上代码实际上只引用了实参的对象,故只打印[1,2,3]
  • 如图:
    在这里插入图片描述
  • (3)改变值,不改变对象
 public static void main(String[] args) {
        int[]  array7={1,2,3,};
        System.out.println(Arrays.toString(array7));
        func2(array7);
        System.out.println(Arrays.toString(array7));
    }
    public static void func2(int[] array7) {
        array7[2]=66;
    }
    //执行结果:
    [1,2,3]
    [1,2,66]
  • 以上代码,形参和实参指向同一个对象地址,所以可以直接在对象中改变值。
  • 如图所示:
    在这里插入图片描述

3 .null

  • null 在 Java 中表示 “空引用” , 也就是一个无效的引用
int[] arr = null; System.out.println(arr[0]); 
// 执行结果 
Exception in thread "main" java.lang.NullPointerException at Test.main(Test.java:6)
  • null 的作用类似于 C 语言中的 NULL (空指针), 都是表示一个无效的内存位置. 因此不能对这个内存进行任何读写操
    作. 一旦尝试读写, 就会抛出 NullPointerException

三、 数组作为方法的返回值

public static void main(String[] args) {
        int[] array2={1,2,3};
        int[] ret=transform(array2);
        printArray(ret);
    }
    public static void printArray(int[] array){
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }
    }
    public static int[] transform(int[] array2){
        int[] ret=new int[array2.length];
        for (int i = 0; i < array2.length; i++) {
            ret[i]=2*array2[i];
        }
        return ret;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值