Java 数组笔记

本文详细介绍了Java中数组的概念、特点、声明与初始化、遍历以及使用场景,包括一维数组和多维数组的创建与操作。同时,讨论了java.util.Arrays类提供的便利方法,如填充、排序和比较数组。此外,还提到了稀疏数组的概念及其在节省空间方面的优势。
摘要由CSDN通过智能技术生成

数组

- 定义

  • 数组是相同类型数据的有序集合。数组元素有序、可重复。

- 特点

  • 数组内的元素数据类型一定相同,不能多种数据类型混合。
  • 数组长度是确定的,数组一旦被创建,大小就不可以改变
  • 数组中元素可以是任何数据类型,包括基本类型、引用类型。
  • 数组使用 new 关键字初始化,属于引用类型,数组是一个对象,数组的每个元素相当于它的成员变量。

一维数组

- 数组的声明和初始化

  • 声明有两种方法:

    dataType[] arrayRefVar;   // 首选的方法
     	 
    dataType arrayRefVar[];  // 效果相同,但不是首选方法,这个方法来自于C++。
    
  • 初始化

    arrayRefVar = new dataType[arraySize];
    
  • 声明和初始化一步完成:

    1、动态初始化(包含默认初始化),声明数组为元素分配空间,与赋值的操作分开进行。

    
    dataType[] arrayRefVar = new dataType[arraySize];
    
    

    例如:

    int[] a = new int[6];
    		a[1] = 1;
    		a[2] = 2;
    

    2、静态初始化,声明数组、为元素分配空间并且赋值(分配空间的同时就显示的赋值了所以不包含默认初始化的隐式赋值)。

    
    dataType[] arrayRefVar = new dataType[]{value0, value1, ..., valuen}
    dataType[] arrayRefVar = {value0, value1, ..., valuen}
    

    例如:

    int[] b = new int[]{1,1,1,};
    int[] c = {1,1,1,};
    

    3、默认初始化(被动态初始化所包含)
    数组是引用类型,其元素相当于类的实例变量,因此数组一旦分配空间,每个元素都按照实例变量一样的方式被隐式初始化。

- 数组的遍历

  • 数组的元素类型和数组的大小都固定,我们通常使用 for 循环或者 增强for循环(For-Each) 遍历数组。

- 数组的使用情景

  • 数组作为方法的参数
  • 数组作为方法的返回值
  • 下面例子中,数组既作为方法的参数,也作为方法的返回值,值得说明的一点是,如果使用普通for循环,需要用 arr.length.fori+TAB 来生成for循环,如果使用增强型for循环,只需要 arr.for+TAB 来生成增强型for循环。(上面这俩是快捷方式)
    package com.baidu.www;
    
    /**
     * Created by joker on 2021/12/7.
     */
    public class shuZuTest {
        public static void main(String[] args) {
            printShuZu(new int[]{123,234,345});
        }
    
        public static int[] printShuZu(int[] aaa){
    //        for (int i : aaa) {
    //            System.out.println(i);
    //
    //        }
            for (int i = 0; i < aaa.length; i++) {
                System.out.println(aaa[i]);
            }
    
            return aaa;
        }
    }
    
    

多维数组

  • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,例如:

  • 动态初始化:

    //二维数组 arr 可以看成一个x行y列的数组。
    int[][] arr = new int[x][y];
    
  • 静态初始化:

    int[][] arr = new int[][]{{1,2},{2,3},{3,4,5,6,7}}
    
  • 遍历:

        public static int[][] bianLiErWei(int[][] qqq){
            for (int i = 0; i < qqq.length; i++) {
                for (int i1 = 0; i1 < qqq[i].length; i1++) {
                    System.out.println(qqq[i][i1]);
                }
            }
            return qqq;
        }
    
  • 使用情景(与一维数组同)

  • 数组作为方法的参数

  • 数组作为方法的返回值

Arrays类

  • java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的,可以直接使用 类名.方法名 调用,也可以使用 对象.方法名 调用。

  • 工具类中封装了很多方法,这个类和它的方法我们自己也能写,只不过java已经写好了我们直接调用即可。其实不必过分依赖工具类。如果我们要实现一个功能,完全可以自己写一个。

  • 一些方法:

    给数组赋值:通过 fill 方法。
    对数组排序:通过 sort 方法,按升序。
    比较数组:通过 equals 方法比较数组中元素值是否相等。
    查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
    

- 稀疏数组

  • 定义:
    当一个二维数组中大部分元素为 0 或者为同一个值,可以转换为稀疏数组,这杨可以大大节省空间。

  • 稀疏数组的处理方式:
    记录数组一共有几行、几列、几个与大部分元素不同的值,把具有不同值的元素和行列及值记录在一个小规模的数组中,达到缩小程序规模的目的。

  • 稀疏数组的特点:

     1、稀疏数组一共有3列。
     2、稀疏数组arr[0][1]的值代表原数组的行数,arr[0][2]的值代表原数组的列数,arr[0][3]的值代表原组中所有与大部分元素不同的值。
     3、稀疏数组除了第一行外,其余行的第0列的值代表原数组的与大部分元素不同的值的横坐标,第1列的值代表纵坐标,第3列的值代表该元素的值。
     注意:在二维数组与稀疏数组之间转换时,最需要注意的是稀疏数组的第一行所有值以及共有3列。
    

二维数组:
在这里插入图片描述

稀疏数组:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值