Java——数组的定义和使用

目录

1.什么是数组

2.创建数组

3.数组的使用

3.1获取数组长度

3.2遍历数组

3.3数组作为方法的参数

3.4数组作为参数的返回值

4.数组转字符串

5.数组拷贝

5.1Arrays.copyOf(arr,arr.length)

5.2Arrays.copyOfRange(arr,2,6)


1.什么是数组

数组就是具有相同属性的集合,在生活中,如一个班级可以看成一个数组,他的每一个元素都是学生。而数组是具有相同数据类型的元素的集合

为什么要使用数组呢?

有人会说,我想要什么数据类型直接定义不就完了,我们要使用数组呢?

打个比方,在疫情防控期间,是对每一个人进行管理好,还是对某个集体进行管理好,当然是集体。所以通过数组我们能更好的管理更多的数。

2.创建数组

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

代码示例:

复制代码
int []arr=new int []{1,2,3,4,5,6};

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

注意事项: 1.静态初始化的时候, 数组元素个数和初始化数据的格式是一致的.

2.以上两种数组在创建是数组的大小就是初始化元素个数

除以上两种创建数组以外,还可以创建一个指定大小的数组,不进行初始化,系统会自动将其初始化为0.

复制代码
    int []arr=new int[100];

3.数组的使用

3.1获取数组长度

复制代码
//格式
数组名.length
//示例
arr.length

注意:

  1. 使用 arr.length 能够获取到数组的长度. . 这个操作为成员访问操作符.

  2. 使用 [ ] 按下标取数组元素. 需要注意, 下标从 0 开始计数

  3. 使用 [ ] 操作既能读取数据, 也能修改数据.

  4. 下标访问操作不能超出有效范围 [0, length - 1] , 如果超出有效范围, 会出现下标越界异常

5.使用数组一定要谨防下标越界

3.2遍历数组

传统遍历for()

复制代码
    for (int i = 0; i < arr.length ; i++) {
            System.out.print(arr[i]+" ");
        }

新型遍历foreach()

复制代码
   for (int x:arr) {
            System.out.println(x+" ");
        }

3.3数组作为方法的参数

示例:

复制代码
    public static void print(int []arr){
        for (int x:arr) {
            System.out.println(x+" ");
        }
    }

    public static void main(String[] args) {
        int []arr={1,2,3,3,43,2,34,2,2,31,2,31,2,3,1,1};
        print(arr);
    }

1.int[] a 是函数的形参, int[] arr 是函数实参.

2.如果需要获取到数组长度, 同样可以使用 a.length.

3.4数组作为参数的返回值

让数组的每一个元素乘2

复制代码
// 直接修改原数组
class Test {
 public static void main(String[] args) {
 int[] arr = {1, 2, 3};
 transform(arr);
 printArray(arr);
 }
 
 public static void printArray(int[] arr) {
 for (int i = 0; i < arr.length; i++) {
 System.out.println(arr[i]);
 }
 }
 
 public static void transform(int[] arr) {
 for (int i = 0; i < arr.length; i++) {
 arr[i] = arr[i] * 2;
 }
 }
}

这个代码固然可行, 但是破坏了原有数组. 有时候我们不希望破坏原数组, 就需要在方法内部创建一个新的数组, 并由方法返回出来.

复制代码
// 返回一个新的数组
class Test {
 public static void main(String[] args) {
 int[] arr = {1, 2, 3};
 int[] output = transform(arr);
 printArray(output);
 }
 
 public static void printArray(int[] arr) {
 for (int i = 0; i < arr.length; i++) {
 System.out.println(arr[i]);
 }
 }
 
 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;
 }
}

这样的话就不会破坏原有数组了,另外由于数组是引用类型,返回的时候只是将这个数组的首地址返回给函数调用者, 没有拷贝数组内容, 从而比较高效.

4.数组转字符串

复制代码
    public static void main(String[] args) {
        int []arr={1,12,21,12,12,1,2};
        String newArr= Arrays.toString(arr);
        System.out.println(newArr);
    }

Arrays.toString()是将数组转字符串,返回类型为字符串

用一个字符串变量接收就行

5.数组拷贝

5.1Arrays.copyOf(arr,arr.length)

复制代码
    public static void main(String[] args) {
        int []arr={1,2,3,4,5,6,7,8,9};
        int []newArr=Arrays.copyOf(arr,arr.length);
        for (int x:newArr) {
            System.out.print(x+" ");
        }
    }

Arrays.copyOf(数组名,拷贝元素的个数)

拷贝的返回值需要用一个新的数组来接收

5.2Arrays.copyOfRange(arr,2,6)

复制代码
    public static void main(String[] args) {
        int []arr={1,2,3,4,5,6,7,8,9};
int []newArr=Arrays.copyOfRange(arr,2,6);
        for (int x:newArr) {
            System.out.print(x+" ");
        }
    }

Arrays.copyOfRange(数组名,拷贝开始位置,拷贝结束位置);

拷贝的返回值需要用一个新的数组来接收

注意事项: 相比于 newArr = arr 这样的赋值, copyOf 是将数组进行了 深拷贝, 即又创建了一个数组对象, 拷贝原有 数组中的所有元素到新数组中. 因此, 修改原数组, 不会影响到新数组.

相关推荐
风象南36 分钟前
SpringBoot实现接口防刷的5种实现方案
java·spring boot·后端
云之兕44 分钟前
Spring Boot 自动配置原理详解
java·前端·spring boot
烁3471 小时前
每日一题(小白)暴力娱乐篇20
java·开发语言·算法·排序算法·娱乐
heyCHEEMS1 小时前
01背包 Java
java·算法·深度优先
呦呦鹿鸣Rzh1 小时前
SpringMvc的请求-获得请求参数
java·开发语言
头孢头孢1 小时前
go语言的语法糖以及和Java的区别
java·开发语言·golang
快乐的木子李2 小时前
Java核心技术面试题
java·开发语言
chaser&upper3 小时前
Spring 服务调用接口时,提示You should be redirected automatically to target URL:
java
一切皆有迹可循5 小时前
IntelliJ IDEA中Spring Boot项目整合MyBatis:从零实现高效数据持久化
java·spring boot·intellij-idea·mybatis
雾月556 小时前
LeetCode 941 有效的山脉数组
java·开发语言·数据结构·算法·leetcode·职场和发展