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

  所有的局部变量都是放在栈内存中保存的,不论是什么类型的变量,但引用类型的变量所引用的对象是存放在堆内存之中。

原文地址:https://www.cnblogs.com/huzi007/p/2715908.html