java数组与内存的控制(1)
看了本文,你将知道一下的知识:
1.java数组的静态特性与初始化java数组的两种方式
2.数组变量与数组对象的区别
一、java数组是静态的
1.java语言是典型的静态语言,因此java的数组时静态的,即是当数组初始化完成后,该数组的长度是不能改变的。java中的数组必须经过初始化才可以使用。所谓的初始化,就是为数组对象的元素分配内存空间,并为每一个数组元素给予初始值。初始化数组的有两种方式。一种是静态初始化,如下:
1 public class Test { 2 3 public static void main(String[] args) { 4 5 int a[]={1,2,3}; 6 7 } 8 9 }
像这种程序员显示的指定每个数组元素的初始值,有系统决定长度的方式就是静态初始化数组。
而第二种是动态初始化,如下:
1 public class Test { 2 3 public static void main(String[] args) { 4 5 int a[]=new int[8]; 6 7 } 8 9 }
像这种初始化有程序员指定长度,由系统为每一个元素分配初始值的方式就是动态初始化数组。
不论是哪种方式初始化数组,那数组的长度就不可改变。由于java中的数组时静态的,所以数组初始化完成后,内存分配空间也就完成了。我们只能改变数组元素中的值而不能改变数组的长度。需要注意的是,java数组的变量本身就是一种引用类型的变量,数组变量并不是数组的本身,而是由它指向堆内存中的对象。
二、数组变量与数组对象的区别
数组变量只是一个引用变量,通常存放在栈内存中,而数组对象就是保存在堆内存中连续内存空间。对数组的初始化其实并不是对数组变量的初始化,而是对数组对象的初始化...0.0
所有的局部变量都是放在栈内存中保存的,不论是什么类型的变量,但引用类型的变量所引用的对象是存放在堆内存之中。