JAVA中数组的使⽤
数组(array),是多个相同类型数据按照⼀定顺序排列的集合,并使⽤⼀个名字命名,通过编号的⽅式对这些数据进⾏统⼀管理。
做个铺垫:
什么是数据结构?
即数据与数据之间的逻辑关系,包含:集合、⼀对⼀、⼀对多、多对多等。
数据的存储结构:
线性表(⼀对⼀的关系):顺序表(数组)、链表、栈、队列
树形结构(⼀对多的关系):⼆叉树
图形结构(多对多的关系)
常应⽤的算法:
排序算法
搜索算法
1、常见概念:
数组概念:多个相同类型数据按⼀定顺序排列的集合,并使⽤⼀个名字命名,通过编号的⽅式对这些数据进⾏统⼀管理。
数组属于引⽤数据类型,数组中的元素可以是任何数据类型,包括引⽤数据类型。
创建数组对象会在内存中开辟⼀整块连续的空间,⽽数组名中引⽤的是这块连续空间的⾸地址。
数组相关的概念:
1、数组名
2、数组元素
java定义一维数组并赋值3、⾓标、下标、索引
4、数组的长度:元素的个数
数组的特点:顺序排列、长度⼀但确定不可修改
数组的分类:
1、按照维数:⼀维数组、⼆维数组。。。
2、按照数组元素的类型:基本数据类型元素的数组、引⽤数据类型元素的数组
2、⼀维数组的使⽤
1. ⼀维数组的声明和初始化:⼀旦初始化完成,长度就确认了。
int[] arr = new int[]{1,2,3,4,5};静态初始化
String[] arr2= new String[5];动态初始化
int[] arr3={1,2,3,4,5,5};静态初始化-类型推断
2. 如何调⽤数组的指定位置的元素
通过⾓标的⽅式调⽤,从0开始,到(数组的长度-1)结束。
arr[1]
arr[2]
3.如何获取数组的长度
length属性
int k = arr.length;
4.如何遍历数组
可通过for循环,依次通过数组的⾓标遍历。
5.数组元素的默认初始化值
数组元素是整型,默认0
数组元素是浮点型,默认0.0
char,默认0或‘\u0000’,⽽⾮‘0’
boolean,默认false
数据元素是引⽤数据类型时,null
6.数组的内存解析
栈:stack,存放局部变量。局部变量存放的地址值,指向堆。
堆:heap,存放new出来的结构(对象、数组)。初始化地址值可以与局部变量相关联,当关联取消,垃圾回收机制会不定时清除。
⽅法区:常量池+静态域
数组定义的过程:new时,在堆空间中开辟固定长度的位置,⽤于存放数组的元素,同时初始化的⾸地址值和栈空间中创建的局部变量关联。此时堆中开辟的元素位置上储存的是默认初始化值,等待赋值。
3、多维数组的使⽤
对于⼆维数组的理解,可以看成是⼀维数组array1作为另⼀个⼀维数组array2的元素⽽存在。数组属于引⽤数据类型,数组的元素也可以是引⽤数据类型。⼀个⼀维数组A的元素如果是⼀维数组类型,那么数组A称为⼆维数组。
从数据底层的运⾏机制来看,其实没有多维数组。
1. ⼆维数组的声明和初始化
int[][] arr1=new int[][]{{1,2,3},{4,5,6}};
String[][] arr2=new String[3][2];
String[][] arr3=new String[3][];
int[] arr4[]=new int[][]{{1,2,3},{4,5,6}};
int[] arr5[]={{1,2,3},{4,5,6}};//类型推断
2.如何调⽤数组的指定位置的元素
内层元素 arr[3][2]
外层元素 arr[3]
3.如何获取数组的长度
arr.length
arr[1].length
4.如何遍历⼆维数组
使⽤嵌套for循环来遍历⼆维数组,外层for循环遍历外层元素,内层for循环遍历内层元素。
5.⼆维数组元素的默认初始化值:
对于初始化⽅式:int[][] arr = new int[4][3];
外层元素的初始化值:地址值
内层元素的初始化值:与⼀维数组初始化情况相同
对于初始化⽅式:int[][] arr=new int[4][];
外层元素的初始化值:null
内层元素的初始化值:不能调⽤,否则报错
4、Arrays类
java.util.Arrays类是操作数组的⼯具类,包含了⽤来操作数组的各种⽅法,常⽤⽅法如下:
a 、boolean equals(int[] a,int[] b)判断两个数组是否相等
b、String toString(int[] a) 输出数组信息
c、void fill(int[] a,int val)将指定值填充到数组之中
d、void sort(int[] a )对数组进⾏排序
e、int binarySearch(int[] a,int key)对排序后的数组进⾏⼆分法检索指定的值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论