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):遍历数组,取出查找元素的下标值;如多次出现,将每次出现的下标值存储在数组中,再输出数组字符串

posted @   许多多被注册了  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示