什么都在学,什么学的都不深,学的很乱,现在打算换工作了,所以学习下Java。
记录一些东西。
/*
数组常见问题
*/
class ArrayDemo
{
public static void main(String[] args)
{
int[] arr = new int[3];
// System.out.println(arr[3]);
//编译通过,说明没有语法错误,但是执行java命令在JVM中运行时,出现错误
//错误提示是ArrayIndexOutOfBoundsException:数组索引越界异常
//当访问数组中不存在的角标索引时,就会发生该异常
// arr = null;
// System.out.println(arr[0]);
//执行javac命令编译时,编译通过,没有语法错误,但是执行java命令在JVM运行时,出现错误
//错误提示为NullPointerException:空指针异常
//当引用型变量(数组变量为引用型变量)没有任何实体指向时,还在用其操作实体,就会引发该异常
System.out.println(arr);//直接将数组名称作为打印变量
//输出结果为[I@de6ced,
//该值@符号的左边是实体的类型,[符号表示该实体为数组类型,I表示该数组为int类型
//@符号右边是数组实体的哈希值,哈希本身是一个算法,由这个算法定义数组实体在内存当中存储的位置(可以简单的理解为地址值),该值本来是二进制,输出时为了简单表示,所以输出为十六进制
//这个值是windows来支持的,是Java调用了windows哈希这种方式来算出了数组实体在内存中的存储位置(开辟内存空间的是由windows系统)
//不用关注该值的具体值。
}
}
作为局部变量的数组名存储在栈中,arr中是3个元素组成的一维数组的地址,3个元素存储在堆中。