java基础知识总结三

1.数组:一种引用类型的数据 ,可以存放多个数据,但是数据类型必须统一。数组在内存中一旦被创建,数组长度不可改变

   数据类型  []  数组名称

   数据类型  数组名称[](了解即可)

2 定义后的数组一定要进行初始化才能使用

a)动态初始化   int [] array =new int [3]  (指定长度)

b)静态初始化   int [] array =new int{1,5,12,14]}(指定内容)    (简便模式     int [] array ={1,5,12,14]}  一个步骤全部写完)

3.获取数组长度: 数组名称.length

4.数组初始化默认值

5.java内存分为5 个部分

   a) 栈(stack)存放局部变量

   b)堆(heap) new出来的

   c)方法区(Method Area) 存放class相关信息

   d)本地方法区(Native Method Area) 和操作系统相关

   e)寄存器 (pc Register)和cpu相关性能极高

 6.为什么说数组在内存中一旦被创建,数组长度不可改变 看下图

   1.当初始化一个数组时, int[]array 相当于一个局部变量 存放在栈中,他指向的是堆中new出来的内存(new int [3])分配好的一个3等分的内存空间,这个三等分的内存空间 指向同一个 内存地址(16进制).而当你通过array[0]=10进行动态初始化时先通过数组名称找到在堆中的开辟出来空间的数组地址,然后更具数组索引替换本来的默认值。

     当你又new 一个新的数组时(array = new [5])  这时候,在堆中又开辟了一个新的内存空间为5,这时候这个为5 等份的内存空间又指向另一个十六进制的数组地址(内存地址) ,而在栈中原本指定堆中的地址就由0x666变为了0x999

这时候 你应该想到 老数组的长度是3  而新数组的长度为5 ,为什么说数组长度不可改变呢??

          这时候 我们改变的是栈中的数组指向的数组地址而不是数组的长度,在又new一个数组时,堆中重新开辟了一个5长度的数组空间。这个意思

猜你喜欢

转载自blog.csdn.net/xx282099721/article/details/87983325