一维数组内存分析 -静态初始化详解

/*
数组:
1.数组是一种引用类型
2.数组是一种简单的数据结构,线性的结构
3.数组是一个容器,可以用来存储其他元素,数组可以存储任意数据类型的元素
4.数组分为:一维数组,二维数组,三维数组,多维数组
5.数组中存储的元素类型是统一的
6.数组长度不可改变,数组一旦创建长度是不可变得,固定的

数组拿首元素的内存地址作为数组对象的内存地址
数组中每一个元素都是有下标的,有索引的
从0开始,任何一个数组都有一个length属性用来获取数组的长度
数组的最后一个元素下标是a1.length-1

数组优点:查找效率高
缺点:随意的增删效率比较低

数组中存储元素的类型是统一的,每一个元素在内存中所占的空间
大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标
就可以快读的计算出偏移量,通过首元素内存地址加上偏移量
快速计算出要查找元素的内存地址,通过内存地址快速定位该元素
所以数组查找元素的效率较高

随机的对数组进行增删元素,当增加的元素的时候,为了保证数组中元素
在空间存储上是有序的,所以被添加元素位置后面所有的元素都要向后移动
删除元素也是,后面的所有元素都要向前移动,所以数组的增删元素的效率很低

修改元素的效率还是很高的
*/


public class fuck1{

public static void main(String[] args){

//int类型的数组
int[] a1=(1,2,34);

//boolean类型的数组
boolean[] b1={true,false,false};


//byte类型的数组
byte[] b2={1,2,3};


//char类型的数组
char[] c={'a','b','c'};


//Object类型的数组,数组里存的是每一个对象在堆里的内存地址
Object o1=new Object();
Object o2=new Object();
Object o3=new Object();

Object[] o={o1,o2,o3};
}

}




/*
初始化一维数组有两种方式:
1.静态初始化
2.动态初始化
*/


public class fuck2{

public static void main(String[] args){

//静态初始化int类型的一维数组
int[] a={10,12,31};

//取得第一个元素
System.out.println("第一个元素是"+a[0]);
System.out.println("第二个元素是"+a[1]);

System.out.println("数组中元素的个数是"+a.length);

//遍历一维数组
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}

//动态声明一个int类型的数组,最多可以存储4个元素
int[] a1=new int[4];


}

}

猜你喜欢

转载自blog.csdn.net/rolic_/article/details/80236099