Java中的数组
数组的特点:
1.数组是一种引用数据类型
2.数组当中的多个数组,类型必须统一
3.数组的长度在程序运行的期间不可改变
数组的初始化:
在内存当中创建一个数组,并且赋予一些默认值 分为:
1.动态初始化(指定长度) ------未赋值
2.静态初始化(指定内容) ------直接赋值
数组的定义格式一:
动态初始化数组格式:
数据类型 [ ] 数组名称 = new 数据类型 [ 数组长度 ]
int []a = new int [5];
数组的定义格式二:
静态初始化基本格式:
数据类型 [ ] 数组名称 = new 数据类型 [ ] { 里面写具体的数据 }
int []a = new int [] {1,2,3,4,5}
注意事项:
虽然静态初始化没有直接告诉长度,但是根据大括号中数据个数,自动推算长度
数组的定义格式三:
省略格式:
数据类型 [ ] 数组名称 = { 写具体数据 }
数组名称的直接打印:
直接打印数组名称,得到的是数组的对应的:内存地址哈希值
[I@75412c2f 中括号 代表为 数组类型 I 表示里面的类型为 int型
@75412c2f 为十六进制 ( 0 1 2 3 4 5 6 7 8 9 a b c d e f )
Java的内存:
Java的内存需要划分为五个部分:
1.栈(Stack):存放的都是方法中的局部变量。
局部变量: 方法的参数 或者是方法{ }内部的变量
局部变量一旦超出作用域,立刻从栈内存当中消失
方法的运行在栈中运行
2.堆 (Heap):凡是 new 出来的东西,都在堆当中。
堆内存里面的东西都有一个地址值:16进制
堆内存里面的数据,都有默认值。规则:
如果是整数 默认为0
如果是浮点数 默认为0.0
如果是字符 默认为 ’ \u0000 ’
如果是布尔 默认为 false
如果是引用类型 默认为 null
3.方法区(Method Area): 存储.class 相关信息,包含方法的信息。
但是方法的实时运行在栈中运行
4.本地方法栈 (Native Method Stack) : 与操作系统相关。
5.寄存器 (pc Register) :与CPU相关。
重点 : 栈 堆 方法区
运行流程:
1.方法区 里面添加方法信息
2.方法区 将方法中的变量信息移交至 栈
为方法在栈中开辟一块内存空间
3.方法里面的 new 在堆里 开辟空间