Java基础之数组

举报
袁袁袁袁满 发表于 2022/04/07 12:34:06 2022/04/07
【摘要】 1 数组数组(array [əˈreɪ] )是一种用来存储 多个相同类型 数据的存储模型。数组是指一组数据的集合,数组中的每个数据称为元素。在Java中,数组也是Java对象。数组中的元素可以是任意类型(包括基本类型和引用类型),但同一个数组里只能存放类型相同的元素。创建数组大致包括如下步骤:声明一个数组类型的引用变量,简称为数组变量;用new语句构造数组的实例。new语句为数组分配内存,...

1 数组

  • 数组(array [əˈreɪ] )是一种用来存储 多个相同类型 数据的存储模型。数组是指一组数据的集合,数组中的每个数据称为元素。在Java中,数组也是Java对象。数组中的元素可以是任意类型(包括基本类型和引用类型),但同一个数组里只能存放类型相同的元素。

  • 创建数组大致包括如下步骤:

    1. 声明一个数组类型的引用变量,简称为数组变量;
    2. 用new语句构造数组的实例。new语句为数组分配内存,并且为数组中的每个元素赋予默认值;
    3. 初始化,即为数组的每个元素设置合适的初始值。

1.1 数组定义格式

  • 格式1(常用):数据类型[] 变量名;
int[] arr; //定义了一个int类型的数组,数组名是arr
  • 格式2:数据类型 变量名[];
int arr[]; //定义了一个int类型的变量,变量名是arr数组

1.2 数组初始化

1.2.1 动态初始化

  • 初始化时只指定初始化长度,由系统为数组分配默认初始化值
  • 默认值
    • int:默认值0
    • float:默认值0.0
    • boolean:默认值false
    • char:默认值是空字符
    • 引用数据类型:默认值 null
  • 格式
数据类型[] 变量名 = new 数据类型[数组长度];
  • 范例
//new:为数组申请内存空间 3:数组长度/数组中元素个数
int[] arr = new int[3]; 
System.out.print(arr[0]) //0 系统分配的默认初始化值

1.2.2 静态初始化

  • 初始化指定数组元素,系统会根据元素个数,计算出数组的长度
  • 格式
数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,.....}

数据类型[] 变量名 = {数据1,数据2,数据3....} //简化格式
  • 范例
int[] arr = new int[]{1,2,3};
System.out.println(arr[0]);

int[] arr1 = {1,2,3};
System.out.println(arr1[0]); //1

1.3 数组元素访问

  • 数组变量访问方式
  • 格式:变量名
  • 数组内部保存数据访问方式
  • 格式:数组名[索引] //0、1、2、3…
int[] arr1 = {1,2,3};
System.out.println(arr1); //[I@1b6d3586:内存空间地址值
System.out.println(arr1[0]); //1
System.out.println(arr1[1]); //2
System.out.println(arr1[2]); //3

1.4 内存分配

  • 栈内存:存储局部变量(定义在方法中的变量,如:arr,使用完毕立刻消失)
  • 堆内存:存储new出来的内容(实体、对象)(垃圾回收器空闲时回收)
    在这里插入图片描述

1.5 遍历数组

  • 获取数组元素个数,格式数组名.length
public class Demo {
    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]); // 1 2 3 4 5
        }
    }
}

1.6 获取数组最值

  • 执行流程
    1、假设数组中的第一个元素为最大值
    2、遍历数组,获取每一个元素,准备进行比较
    3、如果比较的过程,出现了比max更大的,让max记录更大的值
    4、循环结束后,打印最大值
public class Demo {
    public static void main(String[] args) {
        int[] arr = {2,6,7,8,1,3,5,4,9};
        int max = arr[0];
        for(int i=1;i<arr.length;i++) {
            if(arr[i] > max) {
                max = arr[i];
            }
        }
        System.out.println(max); //循环结束后打印
    }
}

2 二维数组

二维数组本质上是以数组作为数组元素的数组,即数组的数组。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。

2.1 二维数组格式

  • 格式一 :数据类型[ ][ ] 变量名;
int[][] arr;
  • 格式二 :数据类型 变量名[][];
int arr[][];
  • 格式三 :数据类型[] 变量名[];
int[] arr[];

2.2 动态初始化

  • 格式:数据类型[ ][ ] 变量名 = new 数据类型[m][n];
    • m:行
    • n:列(每行可以存放多少数据)
  • 范例
public class Demo {
    public static void main(String[] args) {
        int[][] arr = new int[2][3];
        for(int[] row : arr) {
            for(int data : row) {
                System.out.printf("%d\t",data); // 0 0 0
            }                                   // 0 0 0 
            System.out.println();
        }

    }

}

2.3 静态初始化

  • 格式1:格式: 数据类型[ ][ ] 变量名 = new 数据类型[ ][ ] {{元素1,元素2…},{元素1,元素2…}};
int[][] arr = new int[][]{{11,22},{33,44}};
  • 格式2(简化格式):数据类型[][] 变量名 ={{元素1,元素2},{元素1,元素2…}};
int[][] arr = {{11,22},{33,44}};
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200