Java学习——数组的相关知识

一、数组概述和定义格式说明
对于需要多个变量的问题,一个一个存储太占用内存和代码量,所以我们可以使用数组,简单来说,数组就是可以存储多个同一数据类型的容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组定义格式:
格式1: 数据类型[] 数组名;
格式2: 数据类型 数组名[];
举例:
int[] a; 定义了一个int类型的数组a;
int a[]; 定义了一个int类型的a数组;
推荐使用第一种定义方式。
二、数组的初始化
1.Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
2.初始化分为静态初始化和动态初始化:
静态初始化:给出初始化值,由系统决定长度
动态初始化:只指定长度,由系统给出初始化值
需要注意的是,这两种初始化只可以选择一种,不可以动静结合。
3.动态初始化的格式:
数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
举例: int[] arr = new int[3]; 定义了一个int类型的数组arr,这个数组可以存放3个int类型的值。
三、Java中的内存分配
1.栈:存放的是局部变量
局部变量:定义在方法中的变量,或者方法声明上的变量,局部变量存在栈内存。
2.堆:存放的是所有new(创建对象)出来的东西。
存放在堆里面的变量的特点:
a.每一个new(创建对象)的东西都会为其分配一个地址值;
b.每一个变量都有其默认值:
引用数据类型 null
byte short int long 0
float double 0.0
boolean false
char ‘\u0000’
c.使用完毕就成了垃圾,等待垃圾回收器回收
3.方法区(比如main方法)
4.本地方法区
5.寄存器:(cpu使用)
四、数组操作的两个常见小问题越界和空指针
a:ArrayIndexOutOfBoundsException:数组索引越界异常
原因:你访问了不存在的索引。
b:NullPointerException:空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
五、数组的学习
谈到数组的学习,我个人最大的感受是一定要对内存分配这块知识掌握,只有掌握了java内存分配才会清晰每个数组以及元素的变化。

猜你喜欢

转载自blog.csdn.net/lyf_0922/article/details/82999660