• Java 数组


    Java 数组

    概述

    • 数组是存储数据长度固定的容器,其中的数据类型保持一致
      • 是相同类型数据的有序集合
      • 每个数据称为数组元素,每个元素通过下标访问
      • 元素可以是任意数据类型,包括基本类型和引用类型
        • 数组变量属引用类型
        • 数组也可看成是对象,其每个元素可看成该对象的成员变量
    • 数组对象本身是在堆中的

    定义

    • 数据类型名[] 数组名
    • 数据类型名 数组名[]
    int[] arr;
    int arr[];
    
    • 1
    • 2

    初始化

    动态初始化

    • 格式
      数据类型[] 数组名 = new 数据类型[数组长度];
      int[] arr = new int[3];
      
      • 1
      • new:表示为数组开辟内存空间
      • 3表示数组长度
    • 系统自动为创建的数组赋初值
      • 如,int型则赋初值0
    • 包含:默认初始化
      • 数组是引用类型,其元素相当于类的实例变量
      • 数组一经分配空间,其中元素也按照实例变量同样的方式被隐式初始化

    静态初始化

    • 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
    • 数据类型[] 数组名 = {元素1,元素2,...}
    int[] arr = new int[]{11,22,33};
    int[] arr = {11,22,33}
    
    • 1
    • 2

    访问

    打印数组

    System.out.println(arr);
    
    • 1

    执行该语句结果为一串字符

    • 如:打印数组
      • [表示数组
      • I表示数组类型为整型
      • @是分隔符
      • 73a987ac表示数组的十六位地址

    访问格式

    1. 索引:数组中元素的编号
      • 从0开始
    2. 格式:数组名[索引]
      System.out.println(arr[0]);
      
      • 1
    3. 遍历
      • 将数组中元素遍历出来
      • 获取数组长度:arr.length
      • 方法
        • for循环
          public class ArrayTest01 {
          	public static void main(String[] args) {
          		//定义数组
          		int[] arr = {11, 22, 33, 44};
          		//使用通用的遍历格式
          		for(int x=0; x<arr.length; x++) {
          			System.out.println(arr[x]);
          		}
          	}
          }
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
        • forEach循环
          package com.cxl.demo26;
          
          public class Demo26_1 {
              public static void main(String[] args) {
                  int[] arr = {11,22,33,44};
                  for (int i : arr) {
                      System.out.println(i);
                  }
              }
          }
          
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
        • 数组作方法参数
          package com.cxl.demo26;
          
          public class Demo26_2 {
              public static void main(String[] args) {
                  int[] arr = {11,22,33,44};
                  printArray(arr);
              }
              public static void printArray(int[] arr){
                  for (int i = 0; i < arr.length; i++) {
                      System.out.print(arr[i]);
                  }
              }
          }
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
        • 数组作返回值
          public static void main(String[] args) {
                  int[] arr = {11,22,33,44};
          
              }
              public static int[] 方法名(int[] arr){
                  int[] result = new  int[arr.length];
                  return result;
              }
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8

    内存分配

    • 我们只需记住:栈内存堆内存
    区域名称作用
    寄存器给CPU使用,和我们开发无关。
    本地方法栈JVM在使用操作系统功能的时候使用,和我们开发无关。
    方法区存储可以运行的class文件。
    堆内存存储对象或者数组,new来创建的,都存储在堆内存。
    方法栈方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
    • 一个数组的内存图
      一个数组的内存图

    • 多个数组的内存图
      多个数组的内存图

    • 多个数组指向同个数组的内存图
      多个数组指向同个数组的内存图

    常见异常

    索引越界异常

    int[] arr = new int[3];	//索引:0 1 2
    System.out.println(arr[3]);
    
    • 1
    • 2
    • 数组长度为3,索引最大只到2,却访问了索引3

    空指针异常

    //把null赋值给数组
    arr = null;
    
    • 1
    • 2

    多维数组

    • 可看成是数组的数组
      • 是特殊的一维数组
      • 每个数组元素都是一个数组

    二维数组

    1. 定义
    int arr[][] = new  int[2][5];	//可看成一个两行五列数组
    int[][] arr = {{11,22},{33,44},{55,66}};
    
    • 1
    • 2
    1. 遍历
    int[][] arr = {{11,22},{33,44},{55,66}};
    for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[i].length; j++) {
                    System.out.println(arr[i][j]);
                }
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Arrays类

    1. 数组的工具类:java.util.Arrays
    2. 数组本事没有方法供我们调用,但API中提供了工具类Arrays,可对数据对象进行基本操作
    3. Array类中方法都是static修饰的静态方法
      • 使用时可直接使用类名调用,不用使用对象调用
    4. 常用功能
      • 打印数组:toString方法
      • 给数组赋值:通过fill方法
      • 对数组排序:通过sort方法,按升序
      • 比较数组:通过equals方法
      • 查找数组元素:通过binarySearch方法,对排序好的数组进行二分查找
    5. 可通过JDK帮助文档查看其所含方法

    稀疏数组

    1. 当一个数组中大部分元素为0或同一数值时,可用稀疏数组存储
    2. 处理方式
      • 记录数组共几行几列,有多少个不同值
      • 将具不同值元素和行列及值记录在一个小规模数组中,从而缩小程序的规模
  • 相关阅读:
    深入解析css-笔记
    MaxKey单点登录认证系统v3.5.10GA发布
    (一)使用Mybatis实现在student数据库中插入一个学生信息
    QT 信号与槽
    Django-文件上传
    初识string+简单用法(一)
    MHA实验和架构
    POSTGRESQL 一个“大” SQL 的优化历险记
    Jmeter——循环控制器中实现Counter计数器的次数重置
    大一新生HTML期末作业 学生个人网页设计作业 HTML5响应式个人简历网站模板 web前端网页制作课作业
  • 原文地址:https://blog.csdn.net/weixin_57807561/article/details/126761049