day003数组
-
数组是相同类型数据的集合,数组是引用数据类型
-
数组描述的是相同的若干个数据,按照一定的先后次序排列而成,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问。
-
索引,从0开始
-
根据数组的下标有几个,分为一维数组、二维数组、多维数组
数组的特点
-
数组长度确定,一旦被创建,其大小是不可改变的
-
数组元素必须是相同类型,不允许出现混合类型
-
数组中的元素可以是任何数据类型,包括基本类型和引用类型
-
数组变量属于引用类型,数组也可以看成是对象,数组的每个元素相当于该对象的成员变量;
-
数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组本身是在堆中的。
-
null表示空,代表当前元素在内存中不存在,不能被操作;操作null,导致空指针报错
数组声明、创建
-
首先必须声明数组变量,才能在程序中使用数组。数组元素的类型可以是基本型,也可以是引用型
数组类型 [] 数组名(首选);数组类型 数组名 [] (效果相同,但不首选)
数组定义时,要么给元素,要么给长度,不能同时都给
-
动态创建
数组类型 [] 数组名 = new 数组类型 [长度];
数组类型 [5] 数组名 = a;对数组中某个元素进行赋值;
数组元素未赋值,系统根据数组类型默认赋值
byte,short,long,int: 0 float,double: 0.0 char: u0000
boolean: false 引用类型: null
-
静态创建
数组类型 [] 数组名 = {元素1,元素2,·····};
数组长度根据元素个数确定;
-
静态动态二合一
new 数组类型 [] {元素1,元素2,·····};创建数组,省略数组名称
数组类型 [] 数组名 = new 数组类型 [] {元素1,元素2,·····};
数组的边界
-
arrays.length 获取数组长度
b.length为10,System.out.println(b.length);则输出10
-
下标的合法区间[0,length-1],如果越界就会报措ArrayIndexOutOfBoundsException:数组索引越界
数组的使用
-
数组扩容:创建一个符合长度要求的新数组,将老数组的中元素赋值给新数组中,并将需要增加的元素赋值给新数组,再将新数组赋值给老数组;
-
普通的for循环:
-
for-each 循环:(增强for循环)
for (数组类型 变量:数组名);遍历数组的每一个元素,不能根据下标进行操作
for(int a : arr){};遍历arr中的每个元素分别赋值给a;
-
数组作方法入参 ,对形参的改动会影响到实参,因为它们共享一个内存地址
-
数组作为返回值
多维数组
-
多维数组可以看作是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
-
int [] [] a = new int [2] [5]; 可以看成一个两行五列的数组
-
int [3] [2] b = {{1,2},{2,3},{1,3}};
sout(b{[0] [1]}); 即打印出:2
b.length 为3
b[].length 为2
Arrays 类
-
数组的工具类java.util,Arrays
-
数组对象本身没有什么方法可以供我们调用,但API中提供了一个工具类Arryas供我们使用,从而可以对数据对象进行一些基本的操作;
-
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,不必使用对象来调用(可以使用对象名,也可以不使用)
-
具有以下常用功能:Arrays.功能名称();
-
Arrays.sort(arr):排序,对arr数组进行升序排序
-
Arrays.binarySearch(arr , value):对数组进行二分法查找value的下标,找不到返回-1;所以数组必须先排序再查找;
-
Arrays.toString(arr):对arr数组转换为一个字符串类型的值;这个值就是数组中的每一个元素,返回的是String类型,需要一个变量来接收;
-
给数组赋值:fill方法
-
比较数组:equals方法,
-
数组的增删改查(c-r-u-d)
-
增加(crud):创建新数组,找出指定位置,指定之前元素赋值新数组,增加和之后的元素再赋值新数组,新数组赋值原数组;需要声明一个自增数
-
删除(delete):查询需要删除的元素,将之后的元素覆盖前一位;(全删除、删除第一次出现的、删除出现指定次数的)
-
修改(update):查询要修改的元素,并赋值新元素(覆盖);(全替换、替换第一次出现的、替换指定次数的)
-
查找(retrieve):遍历数组,取出查找元素的下标值;如多次出现,将每次出现的下标值存储在数组中,再输出数组字符串
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix