day04-数组

数组

JVM的内存模型

程序计数器:保存当前线程执行的函数

本地方法栈:虚拟机使用的native方法

方法区:加载类中的信息

栈帧:用于存储方法的局部变量、操作栈、动态链接、方法出口等信息

Java虚拟机栈:简称栈,每次调用方法的时候会创建一个栈帧,用于存放当前的局部变量,当程序运行结束时,栈帧会被销毁

Java堆:简称堆,被所有的线程共享,在虚拟机启动时创建。所有的数组与对象都会在堆里分配

GC(Garbage Collection 垃圾回收器):JVM内存不够的时候会自动清理堆中无用的对象(主要清空不使用的资源)

数组的定义

数组:数组就是一组相同类型的数据有序的组织起来

元素:素组中的常量

索引:表示元素存放的位置(从0开始)

数组定义的语法:

素组元素类型[] 素组名;

数组的初始化

初始化后长度就固定了,不能再改,除非重新初始化,也就是说素组是定长的

静态初始化:

语法:

数组元素类型[] 数组名称 = new 素组元素类型[]{元素1,元素1,元素1....}
数组元素类型[] 数组名称 = {元素1,元素1.....}

例子:

int[] ages = new int[]{18,20,21,25};
System.out.println(java.util.Arrays.toString(ages));

动态初始化:

语法:

数组元素类型[] 数组名称 = new 素组元素类型[元素个数];

例子:

int[] arr = new int[5];
for(int i = 0 ; i < arr.length ; i++){
    arr[i] = i;
}

动态初始化后的默认值:

数据类型默认初始话默认值
byte/short/int/long0
float/double0.0
char一个空字符(空格),是"\u0000"
booleanfalse
引用类型null,表示么有任何信息

静态初始化与动态初始化的区别

静态初始化:初始化的时候指定了数组的内容

动态初始化:初始化的时候指定数组的长度

数组的操作

  • 获取数组长度:数组.length;
  • 获取元素值:元素类型 变量名 = 数组名[index]
  • 赋值:数组名[index] = 值

注意:所有的数组都由0开始;最大的索引长度是length-1

增强for循环:foreach,称之为语法糖

for(素组元素类型 变量 : 数组){
    //循环体
}

变量:接收每次遍历出来的结果

for与foreach对比

foreach比较方便开发,但是程序的运行效率没有普通的for循环高,因为foreach有转换的过程

//foreach转换前
int[] arr = { 1, 2, 3, 4, 5, 6 };
for(int i : arr){
    System.out.println(i);
}
//foreach转换后
int[] arrayOfInt1 = { 1, 2, 3, 4, 5, 6 };
int[] arrayOfInt2 = arrayOfInt1;
int i = arrayOfInt2.length;
for (int j = 0; j < i; ++j) {
    int k = arrayOfInt2[j];
    System.out.println(arrayOfInt1);
}

二维数组

二维数组就是每一个元素就是一个一元数组

//静态初始化
数组元素类型[][] 数组名 = new 数组元素类型[][]{数组1,数组2,数组3...};
//动态初始化
数组元素类型[][] 数组名 = new 数组元素类型[x][y];
//x是行 y是列(行内数组的列)

二维数组的使用

int[][] arr = new int[3][3];
//....赋值省略
for(int i = 0 ; i < arr.length ; i++){
    for(int j = 0 ; j < arr[i].length ; j++){
        System.out.println(arr[i][j]);
    }
}

数组中常见错误

ArrayIndexOutOfBoundsException:素组索引越界

​ 报错原因:访问素组范围以内的元素,就会出现此报错

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 索引数

NullPointerException:空指针异常

​ 报错原因:访问一个空引用的成员,就会出现此报错

Exception in thread "main" java.lang.NullPointerException
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值