1、内存地址的计算
具体的内存地址为横坐标的二进制加上纵坐标的二进制,然后转换为16进制
2、数组的定义
数组可以存放多个同一类型的数据。 数组也是一种数据类型, 是引用类型,他在内存里是这个样子的。
定义的变量在栈中,然后在堆中创建数组,当JVM运行时,将引用变量ages转换为,数组中的首地址。
初始化:
nums = new int[3];
表示在堆内存中分配了一块地址三块区域,每块区域都存的是int值
定义:
int[] nums;//JVM运行时在栈中分配一个nums
初始化:
nums = new int[3];在堆内存中初始化一片空间
赋值:在内存中存入具体的值
nums[0] = 1;
nums[1] = 4;
nums[2] = 3;
// 数组有一个属性,可以获得数组的长度 nums.length
类型[] 名字 = new 类型[长度];
3、关于数组的几个问题
1、数组不初始化能赋值吗?不能因为没有在堆里面分配内存空间,而栈中的只是个符号引用 2、初始化之后,如果不赋值,会不会有默认值?只要给你开辟了空间就一定会有默认值。 3、数组能不能越界赋值,比如长度为三,非要给第五个赋值。不能因为会出现数组越界 4、数组一旦确认其长度就无法改变。’ |
4、数组的性质
-
数组一旦建立,长度不能改变。
-
每个位置只能存一个值,多了会覆盖。
-
数组创建后会有默认值:int 0, short 0, byte 0, long 0, float 0.0,double 0.0, char \u0000, boolean false, String null
-
编号从0开始,下标必须在指定范围内使用, 否则报: 下标越界异常。
-
他有个长度的属性,最后一个位置的编号是 长度-1。 0 - length -1
-
数组里边可以是基本类型,也可以是引用类型。