一、一维数组
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组定义格式
1.动态初始化 只指定长度,由系统给出初始化值
* int[] arr = new int[5];
2.静态初始化 给出初始化值,由系统决定长度
int[] arr = new int{1,2,3};
二、java中的内存分配以及栈和堆的区别
1.栈
存储局部变量
方法是在栈中先进后出的,最先进的是主方法。后进的执行完了先出。
2.堆
存储new出来的数组或对象
3.方法区
面向对象部分讲解
4.本地方法区
和系统相关
5.寄存器
给CPU使用
int arr = new int();
new int()是在堆中创建了一个对象,并根据它的数据类型,给它分配一定的内存空间,有一个地址值;而arr是在栈中创建的,通过引用对象的地址值,指向具体的对象。
基本数据类型都有默认初始化值,其中:
byte、short、int、long都是0;
float、double都是0.0;
boolean默认值是false;
char类型的默认值是'\u0000',\u是转义Unicode编码的意思,0000是16进制的0的形式。
地址值详解:[I@5fa45
[代表是一个数组,I表示是一个Int类型的数组,@是固定的,后面的是一个16进制的哈希地址值。
二维数组
1.二维数组格式
动态初始化:int[][] arr = new int[3][2];
另一种写法:int[] arr[] = new int[3][2];
表示这个二维数组中有3个一维数组,每个一维数组中有两个元素
静态初始化:int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};