您的位置:首页 > 编程语言 > Java开发

Java学习第四天笔记-第三部分

2013-04-13 08:33 447 查看
数组:

概念:数组就是存放同一种数据类型的集合,在内存中的表现形式为一个实体的容器.

特点:数组可以自动给存放在其中的数据元素进行索引编号,从0号开始.方便我们直接通过操作数组来操作其中的元素数据.

定义格式1:

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];     int[] arr = new int[3];

定义格式2:

元素类型[] 数组名 = new 元素类型[]{元素,元素,元素,....};      int[] arr = new int[]{3,5,4,2,7,9};

数组在内存中的结构:

内存的划分:
1.寄存器(CPU进行操作管理)
2.本地方法区(所在操作系统如window中提供的一些方法)
3.方法区(类加载技术)
4.栈内存
储存的是局部变量,所谓局部变量就是在函数(方法)当中定义的变量,注意类级别下定义的变量不是局部变量.
栈内存运行效率高,其中数据生命周期短,变量所属的作用域一旦结束,该变量就自动释放.
5.堆内存
存储数组和对象(数组也是一种对象),凡是通过new来建立的实体都存放在堆内存中.
每个实体都有一个首地址值.
堆内存中的每一个变量都是一个默认初始化值,根据类型的不同而不同,整数是0,小数是0.0或者0.0f,布尔是false,
char类型是'\u0000'.
堆内存中的实体不再被指向时,该实体就会变成垃圾由垃圾回收机制来回收,并不是实时的.
相对于基本数据类型,对象被称为引用数据类型,因为在栈中的对象变量只是存储了其指向的堆中实体的地址值.
null用以取消引用类型变量的指向.
多个引用型变量可以指向同一个实体.它们只是记录了同一个实体在堆中的地址值.

几种异常和特殊情况:
1.数组索引越界异常,当访问到数组中不存在的角标时,发生该异常.
int [] arr = new int[3];//数组的中元素的个数为3个
System.out.println(arr[3]);//数组的角标编号从0开始,0,1,2.此数组没有3角标

2.空引用(指针)异常,当引用型变量没有指向任何实体时,还在使用其操作实体,就会发生该异常.
int[] arr = new int[3];
arr = null;//取消了引用类型变量的指向
System.out.println(arr[0]);//无法访问

以上两种异常在编译时并不会报错,到JVM运行时才会报异常.因为以上两种情况语法并没有错误,编译器在编译时只是检查语法,并不会真正在内存中加载数组,所以编译时不会报错.

3.一种特殊情况 ,直接打印了数据类型变量,而不是访问其中的某个元素,得到一串哈希值,表示实体在堆中存放的数据类型和地址值.一般在测试中用到,查看引用型变量指向的是一个什么样的实体.
int[] arr = new int[3];
System.out.println(arr);  // [I@d12345   [:表示该实体存放的是一个数组   I:表示该实体的元素的类型是int型  
      //d12345是调用window方法得出的一串哈希值,表示该实体在内存中的地址值.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: