您的位置:首页 > 编程语言 > Java开发

java数组内存分析

2016-01-19 22:02 405 查看
首先学习几个单词
index 索引
Bounds 边界
assigned 指定


数组:
相同数据类型的有序集合
数组也是对象
长度是不可变的,越界报Array Index out of bounds exception


数组语法:

声明
int [] a;
int a [];


创建
new int [4]


初始化:
默认初始化:数组元素相当于对象的成员变量初始化方式默认的值和成员变量一样数字0 布尔false char 0 引用null
动态初始化:指利用循环进行初始化![图片描述][1]
静态初始化:
int c [] = {23,43,56,78}
cars[] cars= {new car(),new car(),new car(),new car()};


内存分析 1
int []  a=new int[4];
a[0]=1;
a[1]=2;
a[2]=22;
a[3]=33;


int [] a 对应在栈里面声明了一个引用

new int[4]; 对应在堆里面开辟了4个空间的数组但是刚开始的时候默认初始化是0

再分别赋给不同的整形值



内存分析2
class car
{
public String name;
car(String name)
{
this.name = name;
}
}
car[] cars = new car[4];
cars[0]=new car("奔驰");
cars[1]=new car("宝马");
cars[2]=new car("比亚迪");
cars[3]=new car("奥拓");




car[] cars:在栈里面开辟一个引用,指向堆里面的数组空间

new car[4];在堆里面开辟一个4个空间的数组刚开始的时候都是null

cars[0]=new car("奔驰"):在堆里面开辟了一个对象让cars[0]里的int型引用指向该对象而且该对象的name属性指向了常量池里面的常量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java