Java数组

举报
布小禅 发表于 2021/11/27 17:20:40 2021/11/27
【摘要】 Java数组

数组

什么是数组?在Java中,数组就是存储多个相同数据的集合,他们的内存地址是相邻的,所以可以通过数组取值。

这么说,是不是有点不好理解,那么这样呢?

我有一颗白菜,手拿着就能回家,那如果是十几颗呢?

我就可以用麻袋!麻袋!装进去,带回家!是的你要存的数据就是白菜,而这个数组就是你要用的麻袋~~~~~

麻袋中的白菜怎么拿出来我需要用的呢?

下标,Java中的下标是以0开始的,什么是下标,就是你从0开始查,查到某个你要的数据,查到几,下标就是几,就相当于,我在装白菜的时候,说“这是第0个白菜,这是第1个白菜....”,而他们也能听懂(别管他们能不能听懂,我说能就能,哈哈~~),等我需要哪一颗白菜的时候,喊一声,他就自己跳出来了

白菜可以是任意类型的,但是麻袋要和白菜必须是同样的类型

1.一维数组

1.1 定义

两种方法

  1. 直接定义法:直接把白菜装进麻袋a里
int[] a = {1,2,3,4,5,6,7};
  1. 实例化对象定义,初始化大小:不知道有什么白菜,先拿一个知道大小的麻袋a,然后再往里面装白菜
int[] a = new int[10];

1.2添加元素

多种数据,多种数据,多种数据,重要的事情说三遍 多种,怎么办?一个一个往里面装~~ 怎么一个一个装?这种重复的事情,当然交给循环来干了! 比如说我要把1-66装进去

int[] a = new int[66];
for(int i = 0;i<a.length;i++){
 a[i] = i+1;  //这就是我告诉白菜,你是第i个白菜
}

1.3查找元素

我要把名字叫做5的白菜从麻袋里面拿出来,怎么做?

想必你们也都看到了这个a[i],这个就是对麻袋a中叫做i的白菜进行操作~

代码接着上面的

System.out.println(a[5]);  
//结果是6,为啥是6,因为我们的白菜是从1开始往里面装的,而名字是从0开始取的

如果想全部取出,也可以用循环选手哦!

2.多维数组

如果我的白菜,有的老,有的嫩,我想分开装,怎么办?

我告诉你,你这没必要用多个麻袋装,你可以在麻袋里在放几个麻袋啊。

这叫做:多维数组(麻袋里面的白菜,换成了麻袋,然后麻袋里面的麻袋里面装白菜)

2.1定义多维数组

定义一个里面含有三个麻袋的麻袋,每个麻袋可以装4个白菜

int[][] a = new int[3][4];

2.2多维数组的下标取值

先打开这个a[]大麻袋,再打开里面的a[0][]小麻袋,然后才能往里面放白菜

小麻袋也有名字,也是下标,我们要往麻袋里面的第一个小麻袋的第一个位置放一个名字叫做1的白菜,这样做:

a[0][0] = 1;

2.3往多维数组添加元素

先往第一个小麻袋放,在往第二个小麻袋放....

for (int i = 0;i<a.length;i++){
            for (int j = 0;j<a[0].length;j++){
                a[i][j] = j;
 }
}

2.4根据下标查找元素

将我们的数组输出就行了

System.out.println(Arrays.toString(a[0]));
System.out.println(Arrays.toString(a[1]));
System.out.println(Arrays.toString(a[2]));

结果是:

[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]

3.Arrays类操作数组

我们可以使用Arrays类操作我们的麻袋

3.1给数组赋值:通过 fill 方法。

将指定的 int 类型白菜分配给指定 int 型麻袋指定范围中的每个元素

int[][] a = new int[3][4];
Arrays.fill(a[0], 5);
Arrays.fill(a[1], 5);
Arrays.fill(a[2], 5);
System.out.println(Arrays.toString(a[0]));
System.out.println(Arrays.toString(a[1]));
System.out.println(Arrays.toString(a[2]));
/*
输出结果:
[5, 5, 5, 5]
[5, 5, 5, 5]
[5, 5, 5, 5]
*/

3.2数组排序:通过 sort 方法

按升序排序,从小到大

int[][] a = new int[3][4];
//随便给几个值
a[0][2] = 5;
a[1][3] = 3;
a[2][0] = 4;
System.out.println(Arrays.toString(a[0]));
System.out.println(Arrays.toString(a[1]));
System.out.println(Arrays.toString(a[2]));
/*
排序前:
[0, 0, 5, 0]
[0, 0, 0, 3]
[4, 0, 0, 0]
*/
Arrays.sort(a[0]);
Arrays.sort(a[1]);
Arrays.sort(a[2]);
System.out.println(Arrays.toString(a[0]));
System.out.println(Arrays.toString(a[1]));
System.out.println(Arrays.toString(a[2]));
/*
排序后:
[0, 0, 0, 5]
[0, 0, 0, 3]
[0, 0, 0, 4]
*/

3.3比较数组:通过 equals 方法

比较数组中元素值是否相等。 不相等返回false

int[][] a = new int[3][4];
int[][] b = new int[3][4];
System.out.println(Arrays.deepEquals(a, b));
//结果:false

小练习

定义两个数组,一个用于存放学生学号,一个用于存放学生姓名,使用循环同时打印学号与姓名

小练习答案

很简单的一个题,想想怎么做。 定义就不说了,很简单的,如何将他们两个同时显示,其实也很简单,就看脑子转不转的过来圈。

public class Hello{
  public static void main(String[] args){
    // 先定义两个数组
    int[] ids = new int[]{1001, 1002, 1003, 1004, 1005};
    String[] names = new String[]{"张三", "李四", "王二", "麻子", "张武"};
    for (int i=0;i<ids.length;i++){
      System.out.println("姓名是:"+names[i]+"学号是:"+ids[i]);
    }
  }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。