数组(JAVA)

数组的概念

程序:由程序员写好,让电脑去执行
程序=算法+数据结构
一个好的算法+数据结构=优秀的程序
算法:变量 运算符 分支结构 循环结构
数据结构:数组,是一个最基本的数据结构

数组的定义

语法:数据类型[ ] 数组名/变量名=new 数据类型[ size];

数组的初始化

动态初始化

语法: 数据类型[] 变量名 = new 数据类型[size];

   int [] arr2=new int[5];//默认值 0 0 0 0 0
   //数组便捷操作的方法
    System.out.println(Arrays.toString(arr2));

说明:动态初始化创建数组,只有大小,数组中没有具体的值,但是数组的具体类型有默认值

总结:

  • byte short int long类型的数组,默认是0
  • float double类型的数组,默认是0.0
  • boolean类型的数组,默认是false
  • char类型的数组,默认是空
  • String类型的数组,默认是null

Arrays类

Arrays是java工具类,该类提供了很多类对象

静态初始化

语法:数据类型【】 数组名={值1,值2,值3..........};

说明:静态初始化数组既有大小,又有具体的值

带new的静态初始化

语法:数据类型【】数组名=new 数据类型【】{值1.值2,值3.......}

关于初始化的几个错误

  1. 数组中存储的值必须是同一类型,并且跟定义的数据类型相同
  2. 动态初始化数组一定要指定size
  3. 先声明一个数组,再给数组变量初始化时,动态初始化和带new的静态初始化可以赋值,静态初始化不可以
//几种赋值方式

            int [ ] arr21;

            arr21=new int[5];

            //arr21={10,20,30,40};//编译错误

            arr21=new int[]{10,20,30};
【】
  1. ArrayIndexOutOfBoundsException数组下标越界 异常

求数组的长度、大小

语法:数组名.length

数组内容的访问操作

语法:数组名[下标]

建议:

System.out.println(arr33[arr33.length-1]);
System.out.println(Arrays.toString(arr31));

**使用第一种方式来获取最后一个值,因为第一种方法不会因为数组的内容而改变而去修改代码,这种代码编程的方式叫做软编码,第二种叫做硬编码 **

数组的复制

通过自己写代码的方式

int[] arr01={10,20,30,40,50};

            int[] arr02=new int[5];

            System.out.println("复制前:"+Arrays.toString(arr02));

            for(int i=0;i<arr01.length;i++){

                  arr02[i]=arr01[i];

            }

            System.out.println("复制后:"+Arrays.toString(arr02));


*System.arraycopy( , , , , ,)

  • src : 源数组(要被复制的数组)
  • srcPos:源数组的起始下标位置
  • dest:目标数组
  • destPos:目标数组的起始下标位置
  • length:要复制的源数组的元素个数
int[] arr03={100,200,300,400,500};
 int[] arr04=new int[5];
System.out.println("复制前:"+Arrays.toString(arr04));
System.arraycopy(arr03,0,arr04,0,5);
System.out.println("复制后:"+Arrays.toString(arr04));

目标数组=Arrays.copyOf( ,)

  • original:源数组
  • newLength:目标数组的长度
int[] arr06={6,9,4,3,1};
 int[] arr07=Arrays.copyOf(arr06, 5);
System.out.println("复制后:"+Arrays.toString(arr07));

说明:当目标数组的长度小于源数组的长度时,会将源数组多余的部分截取;
当目标数组的长度大于源数组的长度时,会根据数组的数据类型进行填充。

数组的排序

概念:将数组中的元素内容按一定要求重新排列

Arrays.sort(目标数组);

int[] arr={89,72,34,57};
  Arrays.sort(arr);
System.out.println(Arrays.toString(arr));


二维数组

概念:把多个一维数组放在一起。

二维数组的初始化

静态初始化

int [][] arr={{1,2,3},
                {4,5,6},
                {7,8,9}}
语法:数据类型[][] 变量名={一维数组,一维数组.........}

动态初始化

语法:数据类型[][] 数组名=new 数据类型[行数][列数]           //指定了二维数组的行列,指定行表示包含了几个一维数组,指定列表示每一个一维数组包含了几个元素,这种指定,每一个一维数组包含的元素个数相同。
数据类型[][] 数组名=new 数据类型[行数][]          //指定行,不指定列,表示指定了该二维数组中包含了几个一维数组,但是每一个一维数组包含几个元素个数目前还不清楚

二维数组的访问操作

获得二维数组的大小

A 数组名.length  获取该二维数组中包含几个一维数组就有几行

B 数组名.[下标].length//获取某一个数组中的元组个数(某一行的列数)

根据下表访问操作二维数组

语法:数组名[][]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值