一维数组、二维(多维)数组,数组初始化、获取数组指定位置元素、获取数组长度、遍历数组、数组的内存结构

概括

  1. 数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
  2. 数组本身是 引用数据类型 ,而数组中的元素可以是 任何数据类型 ,包括基本数据类型和引用数据类型。
  3. 创建数组对象会在内存中开辟一整块 连续的空间 ,而数组名中引用的是这块连续空间的首地址。
  4. 我们可以直接通过下标 ( 或索引 ) 的方式调用指定位置的元素,速度很快。
  5. 数组的长度一旦确定,就不能修改。
  6. 数组的分类:
    按照维度:一维数组、二维数组、三维数组、
    按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组 ( 即对象数组)
  • 一维数组 

初始化 

静态初始化:数组的初始化和数组元素的赋值操作同时进行

int[] arr = new int[]{11,22,33,44};//格式1
int[] arr1 = {11,22,33,44};//格式2

动态初始化:数组的初始化和数组元素的赋值操作分开进行

String[] arr3 = new String[3];//方式1
String arr4[] = new String[4];//方式2

获取数组指定位置元素

通过角标的方式调用。数组的角标(或索引)从0开始的,到数组的长度-1结束。

String[] name = {"张三","李四","王五","赵六"};
System.out.println(name[0]);//张三
System.out.println(name[1]);//李四
System.out.println(name[2]);//王五
System.out.println(name[3]);//赵六

获取数组的长度

String[] name = {"张三","李四","王五","赵六"};
System.out.println(name.length);//4

遍历数组

int[] arr1 = {11,22,33,44};
    for (int i = 0; i < arr1.length; i++) {
        System.out.print(arr1[i] + "\t");//11	22	33	44
    }

数组元素的默认初始化值

& 数组元素是整型:0  (long类型为0L)
& 数组元素是浮点型:0.0  ((float类型为0.0L))
& 数组元素是char型:0或'\u0000',而非'0'
& 数组元素是boolean型:false
&  数组元素是引用数据类型:null

数组的内存解析

内存的简化结构

 一维数组的内存解析

 test

从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
        成绩>=最高分-10    等级为’A’   
        成绩>=最高分-20    等级为’B’
        成绩>=最高分-30    等级为’C’   
        其余                        等级为’D’

Scanner s = new Scanner(System.in);
System.out.println("请输入学生人数:");
int number = s.nextInt();//使用scanner方法获取学生个数
int[] scores = new int[number];//根据学生人数,创建等长度数组
System.out.println("请输入" + number + "个学生的成绩:");
int maxScore = 0;//定义最高成绩变量
for (int i = 0; i < scores.length; i++) {
    scores[i] = s.nextInt();
    if (maxScore < scores[i]){ //获取数组中的元素的最大值:最高分
        maxScore = scores[i];
    }
}
//根据每个学生成绩与最高分的差值,得到每个学生的等级,并输出等级和成绩(该步需要单独遍历数组,不能放在上边的遍历中,因为最高分还未确定)
char level;
for (int i = 0; i < scores.length; i++) {
    if (maxScore - scores[i] <= 10){
        level = 'A';
    }else if (maxScore - scores[i] <= 20){
        level = 'B';
    }else if (maxScore - scores[i] <= 30){
        level = 'C';
    }else{
        level = 'D';
    }
    System.out.println("学生" + i + "成绩为:" + scores[i] + ",级别为:" + level);//输出学生成绩和等级
}
  •  多维数组

二维数组初始化

静态初始化:

int[][] arr = new int[][]{{1,2,3},{4,5},{6,7,8}};
int[] arr1[] = new int[][]{{1,2,3},{4,5},{6,7,8}};
int arr2[][] = new int[][]{{1,2,3},{4,5},{6,7,8}};
int[][] arr3 = {{1,2,3},{4,5},{6,7,8}};

动态初始化:

int[][] arr4 = new int[4][3];
int[][] arr5 = new int[4][];

调用二维数组的指定位置的元素

int[][] arr3 = {{1,2,3},{4,5},{6,7,8}};
int[][] arr4 = new int[4][3];
int[][] arr5 = new int[4][];
System.out.println(arr3[1][1]);//5
System.out.println(arr4[1][1]);//0
System.out.println(arr5[0]);//null

获取二维数组的长度

int[][] arr11 = new int[][]{{1,2,3},{4,5},{6,7,8}};
int[][] arr12 = new int[4][3];
int[][] arr13 = new int[4][];
System.out.println(arr11.length);//3
System.out.println(arr12[1].length);//3
//System.out.println(arr13[1].length);//java.lang.NullPointerException

遍历二维数组

int[][] arr3 = {{1,2,3},{4,5},{6,7,8}};
for (int i = 0; i < arr3.length; i++) {
    for (int j = 0; j < arr3[i].length; j++) {
        System.out.print(arr[i][j] + "\t");
    }
    System.out.println();
}

二维数组元素的默认初始化值

方式一:如:int[][] arr = new int[4][3];
              外层元素的初始化值为:地址值
              内层元素的初始化值为:与一维数组初始化情况相同

方式二:如:int[][] arr = new int[4][];
              外层元素的初始化值为:null
              内层元素的初始化值为:不能调用,否则报错。

二维数组的内存解析 

关于更多数组的内容,有兴趣的小伙伴可以看我这篇文章:

Array类常用方法#冒泡排序#二分查找法#数组转换集合

说明:本篇文章部分内容和图片引用尚硅谷官网内容,特此说明。@尚硅谷官网地址 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值