目录
数组的概述和静态初始化
介绍
1、数组是一种容器,用来存放同种数据类型的多个值
2、数组容器在存储数据的时候,需要结合隐式转换考虑
3,例如:int类型的数组容器(
booleanbyte short char intdouble)
定义
数据类型 【】数组名
数据类型 数组名【】
数组的初始化
静态初始化
初始化就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。
方式:静态初始化:
格式:数据类型【】数组名=new 数据类型【】{元素1,元素2,元素3.....}
例子: double [] array1=new double [] {1.1,23.4,5.6};
简写 double [] array1= {1.1,23.4,5.6};
注意:数组的长度一旦确定就不能再改变数组的大小了
数组地址:数组在内存中的位置
动态初始化
定义:初始化时只指定数组长度,由系统为数组分配数组值。
例子:数据类型【】数组名=new 数据类型 【数组长度】;
int []arr=new int[3];
区别
动态初始化:只明确元素个数,不明确具体数值,
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度
索引
把数据存储到数组当中:
一旦覆盖之后,原来的数据就不存在了
数组遍历
数组遍历:将数组中的元素取出来,取出来之后可以(打印。求和。判断)
注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印!
扩展:自动的快速生成数组的遍历方式 idea提供的 数字名.for i
例题
一个循环尽量只做一件事情
常见问题
最小索引:0
最大索引:数组的长度-1
索引越界异常:避免:索引的范围
数组练习
求最值
初始化值必须是数组内的任何一个值
为了提高效率,减少循环比较的次数,可以把循环开始条件写为1
交换数据
打乱数据
数组的内存图!
java内存分配:
栈:方法运行时使用的内存,比如main()方法,进入方法栈中执行
堆:存储对象或者数组,new来创建的,都存储在堆内存 new创建newnewnewnew,如果简化的数组定义时没有new关键字,那么数组元素也是存放在堆里边的
方法区:存储可以运行的class文件
本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关
寄存器:给CPU使用,和我们开发无关
(见黑马程序员上部62)
例子:int []arr={1,2,3};
int []arr是存放在栈里边的,然后arr对应的是堆里边的地址,多以打印arr时,打印的是地址而不是数字,{1,2,3}是存放在堆里边的,这个数组只是简化了定义,而内存和有无new没有任何变化。
arr[0]=11;则是把11赋给arr[0],改变数组中堆里边的值。
总结:
1、只要是new出来的一定是堆里面开辟了一个小空间
2、如果new了很多次,那么在堆里面有多个小空间,每个小空间中都有各自的数据
3、main方法进栈
两个数组指向同一个空间的内存图
总结
1、深刻理解数组的内存区的分部和存储
2、理解栈和堆的区别
标签:初始化,arr,JAVA,数据类型,内存,数组,new From: https://blog.csdn.net/m0_75049881/article/details/136965407