java数组

数组:是一种容器,可以用来储存同种数据类型多个值

注:数组容器子在存储数据的时候,需要结合隐式转换考虑,数组类型和存储的数据类型需保持一致。

初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器的过程

地址值:数组的地址值就表示数组在内存中的位置

double [] arr1 ={11,12,13};
System.out.println(arr1)//运行结果为地址值[D@776ec8

//解释地址值的含义
//[:表示当前是一个数组
//D:表示当前数组里面的元素都是double类型的
//@:表示一个间隔符号(固定格式)
//776ec8:才是真正的地址值(十六进制)
//平时习惯性把整体叫做数组的地址值

数组的访问(查询,添加)

索引

:也叫做下标,角标

索引的特点:从0开始,逐个+1增长,连续不间断

//获取数据
int [] arr = {1,2,3,4};
//获取数组的第一个元素,就是获取索引为0的元素
int number = arr [0];
System.out.println(number);//1
System.out.println(arr[1]);//2



//存储数据
//格式:数据名[索引]=具体数据/变量
//细节:一旦覆盖后,原来的数据就不存在了
arr[0] = 100;
System.out.println(arr[0]);//100


数组的静态初始化

完整格式:数据类型 [] 数组名 = new 数据类型 [] {元素1,元素2,元素3.....};

简化格式: 数据类型 [] 数组名 =  {元素1,元素2,元素3.....};

范例:int [] array ={11,12,13};


数组的动态初始化 

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值

格式:数据类型 [] 数组名 =new 数组类型[数组长度]

范例:int [] arr = new int [3]

当数组内没有内容时,数组默认初始化值的规律如下

整数类型:默认初始化值0

小数类型:默认初始化值0.0

字符类型:默认初始化值‘/u0000’(空格)

布尔类型:默认初始化值 flase

引用数据类型:默认初始化值 null


 数组的静态初始化与动态初始化的区别

 动态初始化:手动指定数组长度,由系统给出默认初始化值

用于:只明确元素个数,不明确具体数值,推荐使用动态初始化

静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组长度

用于:需求中已经明确了要操作的具体数据,直接使用静态初始化就可


数组的遍历

数组的遍历:将数组中所有的内容取出来,取出来以后可以(打印,求和,判断.....)

注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印

int arr[]={1,2,3,4};
//在java当中,关于数组的一个长度属性,length
//调用方式:数组名.length
for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
}


//扩展
//idea提供的快速生成数组遍历的方式
//数组名.fori

数值的内存图

说明:数据的内存图是你进阶的关键,以下内容为个人理解,可能存在误差,望见谅。

在讲数组的内存图前,需要介绍以下java的内存图

Java的内存图

在计算机中,每一个软件就相当于在电脑中开辟出一定大小的空间,再在这个空间中去运行

而java的内存又可以分为以下几块

:方法运行时使用的内存,比如main方法运行,进入方法栈中执行

:储存对象或者数组,new来创建的,都存储在堆内存

方法区:存储可以运行的class文件

本地方法栈:JVM在使用操纵系统功能的时候使用,和我们开发无关

寄存器:给CPU使用,和我们开发无关

但是值得注意的是,在JDK8以后就取消了方法区,将方法区变成了元空间,具体可以自行了解。

在了解完Java的内存分类后来介绍数组的内存图

在之前讲了,如果只引用数组名称,得到的是数组的地址,是因为java在定义数组的时候会将其分为两个部分,分为等号左边和右边。将new的内容写在了堆内存中,并会赋予一个地址码,而int什么什么的是写在了栈内存中,再将堆内存给的地址码给到栈中

当要调用数组内的内容时,其顺序为,栈内存先获得堆内存的地址码,再用地址码去堆内存中找具体的内容

总结:1.只要是new出来的一定是在堆里面开辟了一个小空间

           2.如果new了多次,那么在堆里面有多个小空间,每个小空间中都有各自的数据

而还会有另一种情况——两个数组指向同一个空间的内存图

其中两个数组会共用一个地址码

总结:当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改过后的结果了。

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值