现在的位置: 首页 > 综合 > 正文

数组与内存

2018年02月03日 ⁄ 综合 ⁄ 共 1008字 ⁄ 字号 评论关闭

      在java中数组是对象,数组变量是引用类型的变量,当数组初始化之后,该数组所占的内存的空间、数组长度都是不可变的。java程序中的数组只能通过初始化之后才能使用。所谓的初始化就是,创建实际的数组对象,也就是在内存中为数组对象分配内存空间,并为每个数组元素指定初始值。既然数组是对象则对象有对象引用名和对象他们的内存分配如下:

     内存分为栈内存和堆内存,我们经常说基本类型存储在堆内存中而引用类型的变量存储在栈内存中,这种说法有点不全,下面就以数组为例:

1 数组的初始化:

(1)静态初始化:初始化时由程序员显示的指定每个元素的初始值,由系统决定数组长度。

     

(2) 动态初始化:在初始化时程序员只指定数组长度,由系统为数组元素分配初始值。

   

    public  class  ArrayTest{

public static void main(String[]args){

//采用静态初始化

String []  book= new String[]{

"疯狂java讲义",

“java编程思想”

}

//采用动态初始化

String [] strArr= new String[6];

System.out.println("动态初始化:"+ strArr.length);

}

}

     这个类中定义了两个字符串类型的数组当book这个对象创建时book这个引用变量存放在栈内存中,创建对象之时从堆内存中分配相应的内存块给这个对象,分配的这部分内存就不在是堆内存了直到jvm回收这部分内存。分配的内从中存放着相应的数组元素。

    这里要弄明白数组引用变量和对象,引用名称就是引用到相应的对象而对象中存放着自身的先关信息。

    数组是线性的在内存中也是连续的,数组中存放的值的类型都是一样的。

int ---->int []; 在int类型之后增加[]即变为int[]数组类型;

Person------> Person[]:在Person 类型之后增加[]即变为Person[]数组类型;

int[]------->int [][] :在int[]后面增加[]就是int[][]类型的数组;

int[]------>int: int []数组的元素相当于int类型的变量;

Person[]----->Person: Person[]数组的元素相当于Person类型的变量;

int[][]------->int []: int[][]数组元素相当于int[]类型的变量。

 

抱歉!评论已关闭.