天天看点

《java练级之旅》第三天(数组的基本概念)

🌀🌀🌀作者:@小鱼不会骑车

🍁🍁🍁专栏:《java练级之旅》

🎀🎀🎀个人简介:一名专科大一在读的小比特,努力学习编程是我唯一的出路😎😎😎

《java练级之旅》第三天(数组的基本概念)

作者心里话

小鱼一直都是秉承着“开开心心看博客,快快乐乐学知识”这个观点来给大家用一些接地气的话进行讲解,可能会有人觉得小鱼太墨迹了,小鱼这里也很乐意接受大家的意见,会进行采纳,大家也可以指出小鱼的不足,小鱼也会积极的进行改变,总之,愿我们越来越优秀

前言

今天讲到的是关于数组的内容,大致分为什么是数组,数组如何创建,我们的数组是什么类型,以及数组在java中的一些好用的方法

《java练级之旅》第三天(数组的基本概念)

今天呢,我先带大家从数组的基本概念开始,基本概念总共分成三个部分,这里大家也可以看到上面的思维导图,现在我们步入正题

(数组的基本概念)

1.0为什么要使用数组

我们来思考这个问题

如果我我们班有5个同学,我该如何将同学的姓名保存下来

在我没有接触数组这个概念时,我就会认为,简单嘛,创建五个变量,轻轻松松,就像面的代码

//方法一
        String a="张三";
        String b="李四";
        String c="王五";
        String d="小明";
        String e="小朋";
           

这不是简简单单嘛,其实我想说这种方法可以是可以,但是如果是10个同学的姓名呢,50个同学的姓名呢,你可能就傻了,虽然你知道可以创建50个变量,但是也需要好久啊,于是,就涉及到了一个新的知识点,数组,那么什么是数组呢?

《java练级之旅》第三天(数组的基本概念)

大家看,这就是一个数组,当然啊,数组里面是什么都没有保存的,我给大家这么画就是让大家可以清晰的看出数组有几个空间,大家可以看到是7个空间,

数组可以看成相同类型元素的集合,在内存中是一段连续的空间

1.我们的每个空间就相当于一个变量,每个变量的类型是由这个数组的类型决定的,注意!!!我们的数组里面的类型都是同一类型

2.我们数组的下标是从0开始的

3.如果我们存放的元素个数大于数组所能装载的最大元素个数,就会形成越界

知识点1

《java练级之旅》第三天(数组的基本概念)

大家可以看到,我们的数组里面的元素类型都是字符串类型的,如果我们将其中的某个元素替换为整形,大家看

《java练级之旅》第三天(数组的基本概念)
《java练级之旅》第三天(数组的基本概念)

这是我们的报错信息,当然,不止是在java中,我们的C语言也是如此,但是在C语言存在一个类型是结构体,可以存放不同类型,大家如果感兴趣可以去了解了解,

知识点2

关于为什么我们的数组下标是从0开始,该怎么去验证呢,大家请看

《java练级之旅》第三天(数组的基本概念)

当我输出第0个元素的时候输出的就是"张三",这时候我们的0就是下标,接下来我们按顺序输出array数组里面的元素

《java练级之旅》第三天(数组的基本概念)

知识点3

数组越界是什么,给大家看个图片

《java练级之旅》第三天(数组的基本概念)

如果我想在这个元素后面再多加一个元素,会有什么后果呢?我们可以看到,我们的第6个下标之后以及没有空间了,也就是没有变量再去存储这个8了,如果我们强行给这个8添加给这个数组,就会出现以下问题

《java练级之旅》第三天(数组的基本概念)

第一步是初始化这个数组,给这个数组赋值为0123456(这个后续会讲),大家只需要知道我的数组现在里面的值为是什么就行,

第二步就是我们想将这个8强制赋值给这个数组,因为数组只有7个空间嘛,我想将我的8存到这个数组是根本没地方存的,如果我强行存入,就会报错,所以我们要时刻注意数组越界这个问题。

第三步就是经过执行的报错信息。

2.0数组的创建及初始化

2.1 数组的创建

T[]数组名=new T[N];
           

T表示数组中存放的类型;

T[]表示数组的类型;

N表示数组存放的元素的个数

《java练级之旅》第三天(数组的基本概念)

一般通过new关键字来实例化对象

new一个对象可以理解为新建了一个对象;

那是不是就又可以理解为,java当中的数组其实就是一个对象

所以我们听过一句话,就是:java当中一切皆对象,既然我们的数组是对象,那么我们在new的时候就会申请一块内存,

2.2 数组的初始化

关于数组的使用方法,有三种,给大家一一列举出来

《java练级之旅》第三天(数组的基本概念)

如上图,我们的array1和array2是一样的,都是创建一个初始化的数组,我们的array3其实就是new了一个数组的空间出来,只是分配了一个内存并没有初始化(内存大小是6,里面放的是0),未初始化的数组默认为0,就跟图片一样

《java练级之旅》第三天(数组的基本概念)
int [] array1=new int[10]//创建一个可以存放10个int类型元素的数组
double []array2=new double[5]//创建一个可以存放5个double类型元素的数组
Strint []array3=new String[3]//创建一个可以存放3个String类型元素的数组
           

数组的初始化主要分为动态初始化和静态初始化

动态初始化

在数组创建时,直接指定数组的元素个数

int [] array1=new int[10]
           

静态初始化

在数组创建时,不直接指定数组元素个数,而直接将具体的数据内容进行指定

int []array=new int[]{1,2,3,4,5,6,7};
           
  1. 静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素的 个数来决定数组的长度
  2. 静态初始化时,{}的数据类型必须与前面[]中的数据类型一致

    3.静态初始化可以简写,省去后面的new T[];

注意事项1

就是我们的这个位置,这个位置是不可以输入任何值的

《java练级之旅》第三天(数组的基本概念)

注意事项2在array2中(我们不需要在右侧的方框中输入元素的个数,编译器会自动帮我们进行计算元素个数并开辟内存的,如果我输入方框中的元素个数大于或者小于我们初始化的元素的个数都会报错,所以不推荐在方框中写入元素个数)

小知识点

我们开辟动态数组时,不同类型的未经过初始化的值也是不一样的

《java练级之旅》第三天(数组的基本概念)

3.0数组的使用

打印数组的三种解法

方法一

先问大家个问题,如果需要大家实现将数组的每个元素都拷贝出来,大家会怎么做,可能有学过c语言的同学就应该会想到。用循环将数组的每个元素打印出来,对这是一个方法,代码如下

int []array={1,2,3,4,5,6};
        for (int i = 0; i <array.length ; i++) {
            System.out.print(array[i]+" ");
        }
           
int []array={1,2,3,4,5,6};
    for(int x:array) {
        System.out.print(x+" ");
        }
    }
           
int []array={1,2,3,4,5,6};
        System.out.println(Arrays.toString(array));