当前位置:网站首页 > Java基础 > 正文

java数组的基础



文章目录

  • 数组的定义
  • 数组初始化
    • 数组静态初始化
    • 数组的动态初始化
    • 数组的地址值和元素访问
  • 数组索引/下标/角标
  • 数组遍历
  • 数组常见操作
  • 数组内存
    • Java内存分配
    • 数组内存图

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

数组容器在存储数据的时候,需要结合隐式转换考虑。

int类型的数组容器,可以存储:byte、short、int;但是不能存储boolean和double

double类型的数组容器,可以存储:byte、short、int、long、float、double

建议:容器的类型,和存储的数据类型保持一致

数组的定义

格式一:数据类型[ ] 数组名

例:int[ ] array

格式二:数据类型 数组名[ ]

范 例:int array [ ]

数组初始化

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

分类:

  • 静态初始化
  • 动态初始化

数组静态初始化

1.完整格式:

数据类型[ ] 数组名 =new 数据类型[ ]{元素1,元素2,…};

 

2.简化格式(推荐使用)

数据类型[ ] 数组名 ={元素1,元素2,元素3…};

 

数组的动态初始化

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

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

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

数组动态初始化和静态初始化的区别:

java数组的基础

动态初始化:手动指定数组长度,由系统给出默认初始化值。只明确元素个数,不明确具体数值,推荐使用动态初始化

静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度;需求中已经明确了要操作的具体数据,直接静态初始化即可。

数组的地址值和元素访问

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

在这里插入图片描述

扩展:
解释一下地址值的格式含义[De776ec8df

[:表示当前是一个数组

D:表示当前数组里面的元系都是double类型的

@:表示一个间隔符号。(固定格式)

776ec8df:才是数组真正的地址值,(十六进)

平时我们习惯性的会把这个整体叫做数组的地址值。

数组索引/下标/角标

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

2.把数据存储到数组当中

格式: 数组[索引]=具体数据或者变量;

数组遍历

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

在Java当中,关于数组的一个长度属性,length

调用方式:数组名.length

 

遍历并打印数组

 

小练习:定义一个数组存储1,2,3,4,5,6,7,8,9,10遍历数组得到每一个元素。
要求:
1,如果是奇数,则将当前数字扩大两倍
2,如果是偶数,则将当前数字变成二分之一

 

数组常见操作

1.求最值

 

2.遍历数组求和

需求:生成10个1~100之间的随机数存入数组。
1)求出所有数据的和
2)求所有数据的平均数
3)统计有多少个数据比平均值小

 

3.交换数组中的数据

需求:定义一个数组,存入1,2,3,4,5。按照要求交换索引对应的元素。

交换前:1,2,3,4,5

交换后:5,4,3,2,1

 

3.打乱数组数据

需求:定义一个数组,存入1~5。要求打乱数组中所有数据的顺序。

 

数组内存

Java内存分配

  • 栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行
  • 堆 存储对象或者数组,new来创建的,都存储在堆内存
  • 方法区 存储可以运行的class文件
  • 本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关
  • 寄存器 给CPU使用,和我们开发无关

其中

栈:方法运行时使用的内存,比如main方法运行进入方法栈中执行
堆:new来创建的都存储在堆内存

在这里插入图片描述

main方法的内存图:

在这里插入图片描述

数组内存图

1.当定义一个数组

int[ ] arr=new int[2];

main在栈中定义变量arr,new在堆中开辟空间,并且将地址值给arr

在这里插入图片描述

2.两个数组指向同一个空间

int[ ]arr1 ={11,22};

int[ ]arr2 = arr1;

arr1和arr2记录同一个地址值

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

版权声明


相关文章:

  • java基础小项目实例2024-10-17 13:50:06
  • java基础封装概念和实例2024-10-17 13:50:06
  • 杜老师java基础2024-10-17 13:50:06
  • java基础字典表设计2024-10-17 13:50:06
  • JAVA并发基础的书籍2024-10-17 13:50:06
  • java基础坐Java Swing的层次结构深入理解2024-10-17 13:50:06
  • java程序设计基础实验教程2024-10-17 13:50:06
  • 零基础java艺立2024-10-17 13:50:06
  • java基础学完书2024-10-17 13:50:06
  • java面试被认为基础不好2024-10-17 13:50:06