Java基础笔记(一)深入Java数组

Java基础笔记(一)深入Java数组

[TOC]

1、数组的定义与初始化

在Java中,数组也是一种数据类型,而且是一种引用数据类型

定义数组

type[] arrayName;  // 建议使用这种形式
type arrayName[];

注意:定义一个数组时,仅仅是定义了一个引用变量(也就是一个指针),它还未指向任何有效的内存,因此,定义数组时不能指定数组的长度。

Java基础笔记(一)深入Java数组_第1张图片
img


2、数组在内存中的运行机制

数组是一种引用数据类型,所以数组变量只是一个引用。通过这个引用访问它所指向的有效内存(数组对象本身)。

通常,如果数组引用变量是一个局部变量,它会被存储在栈(stack)内存中,而实际的数组对象被存储在堆(heap)内存中,如下图所示:

Java基础笔记(一)深入Java数组_第2张图片
img

下面看一个例子:

int[] a = {1,2,3};
int[] b = new int[4];
b = a;

Java基础笔记(一)深入Java数组_第3张图片
img

从上面的例子可以看出,Java的引用类型就相当于C/C++中的指针类型。


3、栈内存与堆内存

栈内存:当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,内存栈也将自然销毁。

堆内存:当我们在程序中创建(new)一个对象时,该对象会被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。

操作数组的工具类:java.util.Arrays

你可能感兴趣的:(Java基础笔记(一)深入Java数组)