Java数组的定义、使用;一维数组、二维数组的实际应用

本文详细介绍了Java中数组的概念、声明、初始化方法以及常见操作,包括一维数组和二维数组的使用技巧,并提供了实用示例。

继续讲解Java知识,建议大家有一点c语言的基础,不需要多,一点点就行!

1. 数组

声明数组:int array[]; 或者:int[] array; [ ] 写在前面和后面都可以(一般写在前面)。

数组大小:声明数组后必须指定数组大小 —> new int [6]:int[] array = new int[6];

数组赋值: ①可以一个一个的赋值; ②边创建边赋值:

int[] array2 = {1,2,3,4,5,6}; //就是C语言数组 
//或者
int[] array3 = new int[]{1,2,3,4,5,6};//注意开辟长度带初始化后面int[]中不能有数字,但只开辟长度就可以

总结(下面方式都可以):

//声明数组
int[] array;
//分配内存空间
array = new int[6];
//写一起
int[] array = new int[6];
//给数组赋值
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
array[5] = 6;

int[] array2 = {1,2,3,4,5,6};  //常用,就是c数组
int[] array3 = new int[]{1,2,3,4,5,6};

Arrays:数组的工具类,就是专门用来操作数组的一个工具。可以调用它里面的 toString 方法来将数组输出,因为直接输出数组的话,会输出它的地址,而不是里面的数。

  • Arrays.toString(array) 将数组转化为字符串(只能针对一维数组)
  • Arrays.equals(array1,array2) 判断数组是否相等,返回一个Boolean类型的值
  • Arrays.sort(array) 将数组array进行升序排列。
  • Arrays.fill(array,key) 将原先数组array中的数全部变成key。
  • Arrays.copyOf(array,key) 将数组array进行复制,并且生成长度为key的新数组。假如新数组长度不够,会截取。
  • Arrays.binarySearch(array,key) 在数组array中查找key值,并返回所在的下标。若不在就返回小于0的数。(注意:这个方法底层是基于二分查找的,因此前提就是有序,否则会出现问题)

数组名**.**length:表示数组的长度。

判断字符串数组是否已经填满:没有填满,则数组最后一个是 null ,语句 array[array.length-1] != null

注意:①只有是字符串才能用,int 类型的数组不能用null ②此时的null有可能报空指针异常,注意一下。

数组常见的错误
  • 数据类型不匹配。
  • 边声明边赋值的方式,代码必须写在同一行,不能换行。
  • 数组下标越界。
数组的常用操作及方法
  • 求数组的最大值
  • 求数组的最小值
  • 在数组的指定位置插入数据
  • 对数组进行排序(冒泡排序是最基础的一种算法):
冒泡排序

可以按照过程,一次一次地写出来,然会再把它转化为循环体。

2. 二维数组

思维:二维数组简单理解即一维数组中保存的值是另外一个一维数组。

  • 声明、开辟空间和赋值同C语言二维数组。

    由于Arrays.toString方法只针对一维数组,二维数组用不了,可以这样操作:

    int[][] array = {{10,20,30},{40,50}};
    String str = "";
    for(int i = 0; i < array.length; i++){
    	str += Arrays.toString(array[i]);   //因为二维数组可以理解为是一维数组,只不过他的各处的元素是特殊元素—–一维数组。
    }
    System.out.println(str);
    
  • 二维数组的长度其实取得是第一维数组的长度。

    完全遍历二维数组:

    int[][] array1 = {{10,20,30},{40,50}};
    for(int i = 0; i < array1.length; i++){
        for(int j = 0; j<array1[i].length; j++)
            System.out.println(array1[i][j]);
    }
    

综合练习

一个货架,有三层,每一层有6个格子,每一层的格子编号从1~6,各自里面放有鸡蛋,其中鸡蛋个数等于层数乘以格子编号,求三层中每一个格子中鸡蛋的个数和鸡蛋总数。

int[][] array = new int[3][6];
int sum = 0;
for(int i = 0;i<array.length;i++){
    System.out.println("货架第"+(i+1)+"层");
    for(int j=0; j<array[i].length;j++){
        int num = (i+1)*(j+1);
        sum += num;
        System.out.println("第"+j+"个格子的鸡蛋数为:"+num);
    }
}
System.out.println("鸡蛋总数是"+sum+"个");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学鸡!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值