Java 数组

来源:互联网 发布:直播就是网络乞丐 编辑:程序博客网 时间:2024/05/29 10:08

什么都在学,什么学的都不深,学的很乱,现在打算换工作了,所以学习下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个元素存储在堆中。



0 0