Java---数组的定义及使用

本文详细介绍了Java中的数组,包括动态和静态初始化、数组的内存存储、遍历、作为参数传递、作为返回值、数组拷贝以及二维数组的概念和使用方法。通过示例代码演示了数组的创建、访问、遍历等操作,并提到了如何将数组转换为字符串以及使用Arrays类的方法进行操作。
摘要由CSDN通过智能技术生成

什么是数组?

数组本质上就是让程序员能够批量创建一组相同类型的变量。

创建数组

//动态初始化
数据类型[] 数组名称 = new 数据类型[数组长度] ;

//静态初始化

数据类型[] 数组名称 = new 数据类型[]{元素1,元素2 ,........} ;
数据类型[] 数组名称 = {初始化数据};

代码实例:

//动态初始化
int[] arr = new int[3];
//静态初始化
//基本格式
int[] arr = new int[]{1,2,3};
//省略格式
int[] arr = {1,2,3};
//获取数组元素
System.out.println(arr[0]);//1
System.out.println(arr[1]);//2
System.out.println(arr[2]);//3

注意:

  1. 静态初始化时,数组元素个数和初始化数据的格式是一致的。
  2. 访问数组元素,在使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值(如果是整数类型,默认值为0;如果是浮点类型,默认值为0.0;等等)。
  3. 访问数组元素,在使用静态初始化数组的时候,系统自动马上将默认值替换成为了大括号当中的具体数值

数组的使用

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

  1. 获取数组长度(数组名称.length)
  2. 访问元素(数组名称[下标])
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

注意:

  1. 使用arr.length能够获取到数组的长度(一旦数组创建好了之后,此时length就是固定的,无法动态进行修改);
  2. 使用[ ]按下标取数组元素,下标从0开始计数
  3. 使用[ ]操作既能读取数据,也能修改数据;
  4. 下标访问操作不能超出有效范围 [0, length - 1] , 如果超出有效范围, 会出现下标越界异常。

数组在内存中的存储

Java中内存可以划分成为五个部分:

一个数组的内存图:

使用for - each遍历数组

代码示例:

public class Test{
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        for (int x : arr) {
            System.out.println(x);
        }
    }
}

for - each是for循环的另一种使用方式,能够更方便的完成对数组的遍历。

数组作为方法的参数----传递地址

当调用方法的时候,向方法的小括号进行传参,传递进去的师叔祖的地址值。

数组作为方法的参数,返回的是数组的地址值。

代码示例:


public class Test{
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        System.out.println(arr);//地址值
        printArray(arr);
    }
    public static void printArray(int[] a) {
        for (int x: a) {
            System.out.println(x);
        }
    }
}
//int[] a 是函数的形参,int[] arr 是函数的实参

数组作为方法的返回值---返回地址

数组作为方法的返回值,返回的是数组的地址值。

代码参考:

public class Test {
    public static void main(String[] args) {
        int[] ret = calculate(1,2,4);
        System.out.println(ret[0]);
        System.out.println(ret[1]);
    }
    public static int[] calculate(int a,int b,int c) {
        int sum = a + b + c;
        int avg = sum / 3;
        int[] arr = {sum , avg};
        return arr;
    }
}

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


public class Test{
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] result = transform(arr);
        printArray(result);
    }

    public static int[] transform(int[] arr) {
        int[] ret  = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            ret[i] = arr[i] * 2;
        }
        return ret;
    }

    public static void printArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

数组转字符串

Arrays.toString(arr);

数组拷贝

copyOf()方法---复制数组至指定长度----开辟新的内存空间,原数组不变

Arrays.copyOf(arr,arr.length);

数组查询

Arrays类的binarySearch()方法---用二分搜索法搜索指定数组---返回要搜索元素的索引值---适用于各种类型数组

Arrays.binarySearch(Object[], Object key);

二维数组

二维数组本质上也是一维数组,只不过每个元素又是又是一个一维数组

基本语法

数据类型[ ][ ]  数组名称 = new 数据类型 [行数][列数] { 初始化数据 };

代码示例

public class Test{
    public static void main(String[] args) {
        int[][] arr = {
                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12}
        };
        for (int row = 0; row < arr.length; row++) {
            for (int col = 0; col < arr[row].length; col++) {
                System.out.printf("%d\t", arr[row][col]);
            }
            System.out.println("");
        }
    }
}

运行结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值