黑马程序员Java学习视频https://www.bilibili.com/video/BV1Cv411372m
静态初始化数组
格式(简化):
数据类型[ ] 数组名称 ={元素1 元素2 元素3}
int[ ] ages={1,2,3,4}
double[] scores={99.5,100,50.5}
其他的跟PHP差不多
动态初始化数组
默认赋值
写法:
数据类型[ ] 数组名称 =new 数据类型[长度]
int[ ] age = new int[8]
Java内存与分配
运行一个Java程序,主要看JVM中包含的 方法区 栈 堆
案例:
int a=20;
int [ ] arr = new int[3]
a是变量,直接放在栈中,a变量中存储的数据就是20这个值。
new int[3]是创建一个数组对象,会在堆内存中开辟区域存储3个整数。
arr是变量,在栈中,arr中存储的是数组对象在堆内存中的地址值。
数组内存执行原理
多个变量指向同一个数组
多个数组变量中存储的是同一个数组对象的地址。
多个变量修改的都是同一个数组对象中的数据。
案例
int[ ] arr1={1,2,3,4}
int[ ] arr2=arr1
输出的都是同一个值当 arr2[1] = 11 时,arr1[1] 的值也会变成1
使用数组时常见的一个问题
如果 数组为null,那这个数组变量没有指向数组对象。
可以输出这个变量,但是不能用这个数组变量去访问数据或者访问数组长度,会报空指针异常:NullPointerException。
案例
int[ ] arr1=null
System.out.println(arr1) :null
但如果 System.out.println(arr1[0]) :会报错.......NullPointerException
Debug工具
IDEA自带的断点调试工具,可以控制代码从断点开始一行一行地执行,然后详看程序执行的情况