Java基础笔记(一)深入Java数组
[TOC]
1、数组的定义与初始化
在Java中,数组也是一种数据类型,而且是一种<u>引用数据类型</u>。
定义数组:
type[] arrayName; // 建议使用这种形式
type arrayName[];
注意:定义一个数组时,仅仅是定义了一个引用变量(也就是一个指针),它还未指向任何有效的内存,因此,定义数组时不能指定数组的长度。
2、数组在内存中的运行机制
数组是一种引用数据类型,所以数组变量只是一个引用。通过这个引用访问它所指向的有效内存(数组对象本身)。
通常,如果数组引用变量是一个局部变量,它会被存储在栈(stack)内存中,而实际的数组对象被存储在堆(heap)内存中,如下图所示:
下面看一个例子:
int[] a = {1,2,3};
int[] b = new int[4];
b = a;
从上面的例子可以看出,Java的引用类型就相当于C/C++中的指针类型。
3、栈内存与堆内存
栈内存:当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,内存栈也将自然销毁。
堆内存:当我们在程序中创建(new)一个对象时,该对象会被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。
操作数组的工具类:java.util.Arrays