// 变量声明
int a = 1;
int b = 2;
int c = 3;
int d = 4;
...
int n = 20;
// 一个int类型4个字节,一个字节占8位
看到上面的这些int数据,都是int类型,有人就想,既然都是一种类型,为什么不能把他们放在一起?用一个变量接收就行了,每一次还要取一个名字(a,b,c,d…),特别麻烦!!
课间操的时候,广播员让某某班赶紧下来,而不是一个一个叫学生名字,让学生下来集合!
班级里,每个学生都有座位号:
一个年级多个班:int-a班,long-b班
int[] a= {1,2,3,4,5,6,7,8,9,10}
long[] b = {11,12,13,14,15,16,17,18,19,20}
每个班级就像一个数组;
而且每个班的座位就只有那么些个!!
1.同类型元素
2.固定大小(座位有限)
位置有限,那么ArrayList当然得顺应民意出来咯,毕竟数组的长度有限没那么容易,解决问题也是不怎么方便!!
理解不可扩容:因为在创建数组的时候,你说你要3个位置,那么计算机给你3个位置,第四个位置可能被别人申请走了,计算机不可能说,你申请3个位置,他给你多预留2个位置给你,以防你扩容用。想法是美好的,要是预留的位置你不用,那不是浪费了??
int[] a = new int[5];
a.上面的int数组申请5片连续的空间地址,就像盗墓的机关门一样,连续的!
b.盗墓的机关门,先看见第一个门,然后才能见到另一扇门,数组的空间和机关门类似,如图:
c.第一扇门,为了记住门,不迷路,于是你给门上弄了一个1001
的门牌号:1001门开了
d.闯过1001,你的脚踏入下一道门,为了记住自己走过多少道门,只有每走一扇门,就在第一道门上累加:
第几扇门 地址 索引 最终地址
第二扇门记做int[1]:1001 + 1 = 1002
类推:
第三扇门记做int[2]:1001 + 2 = 1003
第四扇门记做int[3]:1001 + 3 = 1004
第五扇门记做int[4]:1001 + 4 = 1005
回头看:
第一扇门记做int[0]:1001 + 0 = 1001
发现规律:数组知道第一个位置地址后,后面的地址可以根据规律计算
int[0] = 100;
int[2] = 200;
//int 占4个字节
假设数组中第一扇门的地址记做2001
那么因为int占4字节,需要往下数3个位置 + 1001的位置储存100这个值
那么:2001 、2002、003、2004
这四个地址用来存储100
计算公式:储存起始地址 = 原始地址 + 索引*字节
假设存放的是:int类型,原始int[0]的地址 = 1001
现在要存放100这个值,那么计算机就会计算得知:1001 + 0*4 = 1001;
从1001位置开始(包含1001),数4个位置,存的就是 100
数组内存分配之堆栈:https://blog.csdn.net/lcl19970203/article/details/54428358