Java中数组的常见操作合集

目录
  • 数组的常见操作
    • 数组越界异常
    • 数组空指针异常
    • 数组遍历
    • 数组获取最大值元素
    • 数组反转
  • 数组作为方法参数和返回值
    • 数组作为方法参数
    • 数组作为方法返回值

数组的常见操作

数组越界异常

public static void main(String[] args) {
        int[] array = {15, 25, 35};
        System.out.println(array[0]); //15
        System.out.println(array[1]); // 25
        System.out.println(array[2]); // 35

        // 错误写法
        // 并不存在3号元素,所以发生异常
        System.out.println(array[3]);
    }

创建数组,赋值3个元素,数组的索引就是15,25,35,没有3索引,因此我们不能访问数组中不存在的索引,程序运行后,将会抛出 ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

15
25
35
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
	at com.zjq.javabase.base05.demo03.Demo01ArrayIndex.main(Demo01ArrayIndex.java:25)

数组空指针异常

观察一下代码,运行后会出现什么结果。

 public static void main(String[] args) {
        int[] array = null;
//        array = new int[3];
        System.out.println(array[0]);
    }

array= null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候 会抛出NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修 改我们编写的代码。

Exception in thread "main" java.lang.NullPointerException
	at com.zjq.javabase.base05.demo03.Demo02ArrayNull.main(Demo02ArrayNull.java:20)

数组遍历

数组遍历: 就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

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

以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,这种写法肯定不行,因此我们需要改造成循环的写法。数组的索引是0 到lenght-1 ,可以作为循环的条件出现。

public static void main(String[] args) {
    int[] arr = { 1, 2, 3, 4, 5 };
    for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
}

数组获取最大值元素

最大值获取:从数组的所有元素中找出最大值。 实现思路

  • 定义变量,保存数组0索引上的元素
  • 遍历数组,获取出数组中的每个元素
  • 将遍历到的元素和保存数组0索引上值的变量进行比较
  • 如果数组元素的值大于了变量的值,变量记录住新的值
  • 数组循环遍历结束,变量保存的就是数组中的最大值

代码实现如下:

public static void main(String[] args) {
        int[] array = { 5, 15, 30, 20, 10000, 30, 35 };

        int max = array[0]; // 比武擂台
        for (int i = 1; i < array.length; i++) {
            // 如果当前元素,比max更大,则换人
            if (array[i] > max) {
                max = array[i];
            }
        }
        // 谁最后最厉害,就能在max当中留下谁的战斗力
        System.out.println("最大值:" + max);
    }

数组反转

数组的反转: 数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1 实现思想:数组最远端的元素互换位置。

  • 实现反转,就需要将数组最远端元素位置交换
  • 定义两个变量,保存数组的最小索引和最大索引
  • 两个索引上的元素交换位置
  • 最小索引++,最大索引--,再次交换位置
  • 最小索引超过了最大索引,数组反转操作结束

代码实现:

public static void main(String[] args) {
    int[] arr = { 1, 2, 3, 4, 5 };
    /*
    循环中定义变量min=0最小索引
    max=arr.length‐1最大索引
    min++,max‐‐
    */
    for (int min = 0, max = arr.length ‐ 1; min <= max; min++, max‐‐) {
        //利用第三方变量完成数组中的元素交换
        int temp = arr[min];
        arr[min] = arr[max];
        arr[max] = temp;
    }
    // 反转后,遍历数组
    for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
}

数组作为方法参数和返回值

数组作为方法参数

以前的方法中我们学习了方法的参数和返回值,但是使用的都是基本数据类型。那么作为引用类型的数组能否作为方法的参数进行传递呢,当然是可以的。 数组作为方法参数传递,传递的参数是数组内存的地址。

public static void main(String[] args) {
    int[] arr = { 1, 3, 5, 7, 9 };
    //调用方法,传递数组
    printArray(arr);
}
/*
创建方法,方法接收数组类型的参数
进行数组的遍历
*/
public static void printArray(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
}

数组作为方法返回值

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

public static void main(String[] args) {
    //调用方法,接收数组的返回值
    //接收到的是数组的内存地址
    int[] arr = getArray();
    for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
}
/**
    创建方法,返回值是数组类型
    return返回数组的地址
*/
public static int[] getArray() {
    int[] arr = { 1, 3, 5, 7, 9 };
    //返回数组的地址,返回到调用者
    return arr;
}

到此这篇关于Java中数组的常见操作合集的文章就介绍到这了,更多相关Java数组操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java 从json提取数组并转换为list的操作方法

    目录 Java 从json提取数组并转换为list Java单个对象和List对象转换成Json,Json转List (一)使用单个对象转换JSON对象 (二)多个对象存到List,再转换成JSON (三)json的list对象转List对象 Java 从json提取数组并转换为list 这里ret表示json字符串原文 // 解析为JSONObject JSONObject jsonObject = JSONObject.parseObject(ret); // 提取出JSONArray JS

  • Java数据结构之稀疏数组的实现与应用

    目录 1.稀疏数组引入 1.1 使用场景 1.2 稀疏数组简介 2.稀疏数组的实现 2.1 案例概述 2.2 思路分析 2.3 代码实现 1.稀疏数组引入 1.1 使用场景 笔者在课程设计中曾写过一个扫雷小游戏,为了便于讲解,我们来做个简化(实际比这个复杂),只考虑当前位置有雷与无雷两种状况:雷用1表示,非雷用0表示.则将当前状态用二维数组表示如下: 在右侧的二维数组中,很多都是0,即记录了很多没有意义的数据,因此,我们考虑使用稀疏数组进行存储结构的优化. 1.2 稀疏数组简介 当一个数组中的大

  • Java C++题解leetcode1441用栈操作构建数组示例

    目录 题目要求 思路:模拟[双指针] Java C++ Rust 题目要求 思路:模拟[双指针] 按题意模拟即可: 一个指针cur依次指向target中的每个元素,另一个指针i依次指向1∼n的数字: 对i所指向的每个数字进行Push操作,然后判断当前数字与target[cur]是否相等: 相等则判断下一个数字,同时将cur指向下一个元素: 否则需进行Pop操作. 过程中需注意cur的越界,当其越界则target构造完毕. Java class Solution { public List<Str

  • Java数组队列及环形数组队列超详细讲解

    目录 一.队列 1.基本介绍 2.示意图 3.队列的特点 二.数组模拟队列 1.数组队列初始化 2.判断方法 3.增删改查的方法 4.注意 三.数组模拟环形队列 1.初始化 2.判断方法 3.增删改查的方法 一.队列 1.基本介绍 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的端称为队头. 2.示意图 3.队列的特点 先进先出: 在队列中插入一

  • java如何将int数组转化为Integer数组

    目录 将int数组转化为Integer数组 Java int和Integer互转原理 Java Integer.int 与 new Integer() Integer.valueOf() new Integer() 为什么 Java 9 不建议使用 new Integer 了? int 与 integer 相互转换及区别 将int数组转化为Integer数组 这里使用java8的stream来进行转化,详细步骤如下所示: //初始化int数组 int[] nums = {1,2,3,4,5,6}

  • Java中将 int[] 数组 转换为 List分享

    目录 前言 为什么不能用 Arrays 的 asList 方法将 int[] 装换成 ArrayList 使用stream进行转换(jdk8 推荐) 遍历数组,逐个加入元素到List中 前言 说起数组转换成 ArrayList,很多同学第一反应就是遍历数组,将元素逐个添加到 ArrayList 中,但是这个看着就lower,一般不会这么答. 所以马上就会想到Arrays工具类的 asList 方法,如果你这么答,那么恭喜你,答错入坑. 为什么不能用 Arrays 的 asList 方法将 int

  • 关于Java SE数组的深入理解

    目录 1.数组的基本概念 1.1 我们为什么需要数组? 1.2 数组的创建与初始化 1.3 数组的使用 1.4 数组的遍历 2.引用类型数组的深入讲解 2.1 简单了解 JVM 的内存分布 2.2 基本类型变量与引用类型变量的区别 2.3 通过方法更深刻理解引用变量 2.4 数组作为函数返回值 3.二维数组 3.1 二维数组的概念和内存布局 3.2 二维数组的定义和初始化 3.3 二维数组遍历 3.4 不规则的二维数组 总结 1.数组的基本概念 1.1 我们为什么需要数组? 假设说我们要存每个同

  • Java中如何将 int[] 数组转换为 ArrayList(list)

    目录 Java中数组转List的四种方式 第一种方式(未必最佳):使用ArrayList.asList(strArray) 第二种方法(支持增删查改): 第三种方式(通过集合工具类Collections.addAll()方法(最高效)) 第四种方式通过JDK8的Stream流将3总基本类型数组转为List java数组转list误区 一.不能把基本数据类型转化为列表 二.asList方法返回的是数组的一个视图 下面介绍下Java中如何将 int[] 数组转换为 List(ArrayList) 前

  • Java postgresql数组字段类型处理方法详解

    在实际开发中遇到postgresql中定义的数组字段,下面解决两个问题,如何定义数组字段的默认值为空格数组,以及如何再java实体类中直接使用数组对象接受数据或把数据存入数据库. 1.在postgresql中定义数组对象及默认值 以字符串你数组为例: 比如一个字段用于存储多张图片的url,可以使用一下sql定义 pictures _varchar NOT NUll default ARRAY[]::character varying[] 2.实体类存入数组到数据库并接受数据库的数组数据 直接定义

  • 计算Java数组长度函数的方法以及代码分析

    Java 中的数组可以包含多个元素,具体取决于对象的创建方式.为了让用户执行不同的操作,必须知道数组的长度. 数组长度属性:如何求出数组的长度? 为了获得 Java 数组长度,我们需要使用“数组长度属性”,如下例所示: /** * An Example to get the Array Length is Java */ public class ArrayLengthJava { public static void main(String[] args) { String[] myArray

  • 浅谈Java当作数组的几个应用场景

    目录 前言 1.保存数据 2.. 参数传基本数据类型 3.. 参数传数组类型(引用数据类型) 4. 作为函数的返回值 总结 前言 对于数组,在C语言中就有过学习,但是,并没有怎么进行总结过,所以,笔者在Java中,对数组的几个简单的应用场景进行总结一下: 1.保存数据 public static void main(String[] args) { int[] array = {1, 2, 3}; for(int i = 0; i < array.length; ++i){ System.out

  • Java二维数组与稀疏数组相互转换实现详解

    目录 一.稀疏数组 1.什么是稀疏数组 2.图示 3.稀疏数组的表达方式 二.二维数组→稀疏数组 三.稀疏数组→二维数组 一.稀疏数组 1.什么是稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组时,可以用稀疏数组来保存该数组.稀疏数组,记录一共有几行几列,有多少个不为零的值或相同的值. 简单来说就是将大规模的数组缩小成小规模的数据,从而减少空间浪费. 2.图示 上面的图示中,左侧是二维数组,右侧是稀疏数组,将二维数组转成稀疏数组,明显的可以看出空间减少了,可以有效的节约空间,提高效率.

  • Java之数组在指定位置插入元素实现

    1.假设在已知数组中在指定位置添加一个元素,那么在这位置的数据元素就会被替换掉. 代码: public class InsertArray { public static void main(String[] args) { int index = 2; int value = 5; int[] array = new int[]{1,2,3,4}; array[index] = value; System.out.println(Arrays.toString(array)); } } 测试结

  • Java C++题解leetcode915分割数组示例

    目录 题目要求 思路一:两次遍历 Java C++ Rust 思路二:一次遍历 Java C++ Rust 题目要求 题目链接 思路一:两次遍历 题目的意思也就是左半边数组的最大值小于等于右半边数组的最小值,那么就找这个分界点就好: 首先从后向前遍历,找[i,n−1]里最小的值: 然后从前向后遍历,找[0,i]里最大的值: 然后找满足max[i]<=min[i+1]的分割点i: 可以将2.3两步结合为一步完成,由于iii从前向后不断增大,所以用后面(较大)的值覆盖更新之前的值. 找到分界点的索引

  • Java数组(Array)最全汇总(中篇)

    目录 前言 本章学习要点 Java二维数组详解 创建二维数组 初始化二维数组 例 1 例 2 获取全部元素 例 3 例 4 获取整行元素 例 5 获取整列元素 例 6 Java不规则数组 Java数组也是一种数据类型 Java中到底有没有多维数组(长篇神文)? 前言 本章是关于Java数组的最全汇总,本篇为汇总中篇,主要讲了二维数组和不规则的数组的相关内容. 数组是最常见的一种数据结构,它是相同类型的用一个标识符封装到一起的基本类型数据序列或者对象序列. 数组使用一个统一的数组名和不同的下标来唯

随机推荐