00:00
大家好,我是海波老师,接下来我们来继续讲讲Java中的常见类和对象,好,我们这里呢把那呢拷贝一下,我们这里呢写上一个零二,然后点击OK,然后把这里呢改成零二就可以了啊,里面的东西全都不要了。接下来我们来给大家讲一个叫数组的一个对象啊,咱们叫数组,那什么是数组呢?很简单,所谓的数组呢,直观的理解啊,就是数据的组合,它是我们Java中提供的一种特殊的数据类型,它可以将多个独立的对象组合在一起。咱们之前讲的很多语法呢,都是以单一的数据为基础的,比如创建一个什么变量啊,创建一个什么对象什么的,我们创建class啊,咱们的USER1在这里呢,我们准备创建对象,我们叫USER1,咱们的USER1它等于new user1好了,写完了,写完了以后,我在这里面呢,写成一个方法,咱们叫public啊,然后呢,我们的word写个test,好写完之后呢,在里面打印我们的字符串,我就写上叫test,点点点就可以了。好啦,那这样的话,我的U1我就可以开始呢,我们点一下我们叫test,诶好,然后呢,我们执行一下。
01:07
提醒以后呢,大家会发现没有任何的问题,对吧,非常的简单,但是呢,我的对象如果多一点呢,比方说我们多个对象。个对象以后1234好,那我们这里写上它,我们叫做二,然后呢,我们叫做三,我们叫做四都可以吧,好了,我们接下来运行一下运行。听以后呢,也没有任何的问题啊,我们这里呢,就是我们的test啊,那么代码写完以后呢,你会发现功能上啊是没有任何的问题,但是是不是会感觉非常的繁琐啊,现在呢,我们有四个,那如果有100个U的对象怎么办?难道这样的代码我们要写100遍吗?不可能办,那该怎么办呢?能不能简化一下咱们当前的代码呢?其实啊,如果这100个对象,每个对象的功能执行的是不一样的,你还真就没有办法简化啊,为什么呢?每个对象的功能不一样嘛,所以说每个对象的独立调用你是没有办法简化的,但是恰恰呢,我们这里的对象的功能啊,它都一样。
02:02
所以啊,我们完全可以将我们的对象呢组合在一起,通过循环的方式来调用对象的功能,那么这里的对象组合啊,我们就可以采用数组的方式,那么接下来咱们就说一下数组的相关语法和基本使用方式。数组呢,在我们Java中啊,它并不是一个特殊的类型,它的类型呢,主要依托于它容纳的数据类型,比如啊,我们的数组当中,如果存储的是字符串的话,那咱们就叫做字符串数组,如果咱们存储的是我们的UR的话,那么咱们就称之为叫U的数组,就是这么个意思。数主的基本声明方式啊,就是在我们类型的后面呢,增加中括号就可以了,给咱们说一下数组的声明方式,诶,是我们的类型加上一个中国号,然后呢,有一个变量就可以了啊,这个呢就是我们的声明方式,咱们现在呢,有一个字符串数组的话,我就写上一个字符串,然后呢加上一个中括号就行了。那给它起一个变量名,我们叫做name,加个S就可以了,这样的话我就等同于声明了一个字符串的一个数组。那么如何创建我们的数组呢?也非常的简单,来,咱们接着写,数组的创建,数组的创建,那么创建的方式呢?我们这里直接写上它叫做new。
03:13
然后呢,写上类型,然后写上一个中括号就可以了,这里我写上它等号等于谬,然后呢,你这里不是叫字符串吗?我这就写个字符串呢,加上一个中括号可以了,大家会发现我们这里呢,有个红色的波浪线,说明我们当前还是有点问题,为什么呢?因为啊,咱们宿主的主要目的就是为了容量数据,所以啊它需要明确数主的容量是多少,那么这里的容量呢,其实就是我数主当中能够容纳数据的数量了,为了简单啊,我们这里在中国号里面,我们写上一个三就可以,接下来就意味着这边应该写上一个叫容量,这就表示当前数组能够容纳数据的数量为三,那怎么理解呢?咱们画图说一下。我们在这里呢,我们画一个小方块啊,咱们拿过来,然后呢,给它画一个方块,这个方块当中呢,我们用一个蓝色来表示一下,这个呢,我们就称之为叫宿主了,所以把这个放过来,我们写上它啊,咱们叫数组。
04:08
那写完了以后啊,在它里面呢,我们要画一些小方块儿啊,小方块咱们画一下。啊,这小方块呢,咱们就画三个吧,哎,咱们就给大家画三个就可以了啊来画三个,把这个呢,我们给它稍微的挪一下啊,行了,挪完了以后呢,我们把这个小方块儿啊,咱们换个颜色,咱们换一个黄色吧。好了,构建一个数值的感觉呢,就好比有一个抽屉,然后呢,我们设定的容量呢,是我们的山,这就好比呢,我们抽屉当中啊,有三个小格子可以容纳我们的物品,咱们图形当中的这个蓝色的方块呢,就好比这个抽屉一样,我们黄色的这个小方块呢,这就好比我们的抽屉中的小格子,它们是连续放在一起的啊。好了,我们画完图以后,大概有了一个了解之后,我们准备往这个抽屉里面我们放数据了,那么往里面放数据我们该怎么放呢?这就涉及到数组中每个小格子的编号问题,我们向数组中放东西,必须知道每个小格子的编号才可以,所以数组会为每个小格子设定一个唯一的编号,而且啊,这个编号是连续的,它从零开始,大家看一下来。
05:10
我们这里呢,就把一个我们的编号我放到这里,我把颜色呢,我变一变,变成一个紫色啊,那么我们从零开始,那么这个编号就是零了,然后呢,我们连续的编号,那么这里呢,就是我们的一啊,它就是一,那我们这边呢,就是我们的二,就是这样的,哎,老师不能更多吗?更多了,因为咱们当前的数组啊,就是个抽屉,抽屉里面就是三个小格子,你说它的编号不就只能是012嘛,对不对,就是这样的,这里的编号呢,我们要说一下,在我们的Java当中,我们把这个编号呢,我们称之为叫索引,这个索引的目的啊很简单,就是用来为这个小格子用的啊,所以咱们说一下。好了,那这个说完了之后,我们准备给大家去操作一下,我们在这里呢,就写上它来给我们的数组的小格子啊,小格子添加数据,那么如何添加呢?我们写上添加的方式,为我们写上它,我们叫数组的变量,然后呢再加上一个中括号,然后呢里面写上,所以就可以了啊,然后等于我们的数据,这个就是我们添加数据的方式,来我们操作一下,我们这里的数组的量不是names吗?我就写上它叫names,然后呢,写上一个中括号,我给它一个零,这个零啊是我的这个小格子,它就它,然后呢,我现在呢,就写个等号号,以后我们写上一个我们的张三,哎,我这么写就可以了,那么这个地方需要稍微注意一下啊,因为咱们当前的数组呢,它的类型呢,是一个字符串数组,所以呢,它里面放的元素呢,其实都是字符串,你不能放别的,比方说呀,你放一个数字一,你放完就报错了,为什么呢?因为类型不匹配,所以啊,咱们数组其实是没有类。
06:47
了,它纯粹呢,就是看它里面存储数据的类型,对吧,我们说过了,你是存字符串,就叫字符串数组嘛,所以我这里呢,就只能放一个字符串就可以了,那你的零现在有数据了,就好比呢,我们当前把张三放进去了呀,所以我就写上一个张三,哎就可以了,哎,写上一个张三,那接下来我准备放我们的第二个,第二个写个李四吧,所以我再写上一个,记住同学们,我再写上一个一,我写上一个我们的李四,诶好了。
07:13
那我写完了以后,诶,我再来写第二个呢,哎,我们写上他,我们叫做王五,我们又写了两个数据,那么张三李四王五不就行了吗?012,哎,老师呀,你要这么写的话,那你再写一个行不行呢?比方说我写个三,同学们如果你现在要再这么写的话,就出错了,为什么出错了,因为咱们抽屉里面啊,只有三个小格子,你的这个索引呢,就是012,总共三个吧,那么这个时候是没有任何问题的,但是呢,你写到这儿的话就不对了,那为什么?因为它超过了咱们索引的范围,所以我们这里也说一下来。那这里我们说一下,就是我们添加数据和我们访问数据时啊,访问数据时我们的索引它是不能超过。指定的范围的,那什么样的范围呢?很简单,就是零到我们的长度减一。
08:07
不叫长度减一啊,因为从零开始嘛,一总共三个小格子,那么我们从零开始不就是012嘛,那所以它的最大的那个索引应该就是我们的二对不对,三减一不就是二吗?所以这就是它的索引范围,所以呢,你这个三是不行的,大家看一下我运行一下,运行以后你会发现我们当前就一定会出现错误对不对,它出现的错误呢,就是我索引超出了我们的范围,就是这个意思啊,哎,老师啊,我不能超出这个索引的范围的话,我如果重复去写怎么办?那这里说一下,我如果再写个零,会出现什么情况呢?这里给大家解释一下,如果你再去写上一个零的话,它等同于修改,那所以咱们说一下,如果重复啊,给相同的索引我们添加数据,那么它等同于我们的修改数据,那等同于啊,把咱们之前的数据给它修改掉,诶所以呢,我们想它咱们叫做照六,哎就行了,哎,老师啊,那你光这么说,咱们得演示一下,现在我们准备要去查询数据,那么查询数据就等于访问数据啊,哎,访问数据对于访问数据的基本方式呢,跟我们这个差不多。
09:17
所以呢,我们说一下拷贝。拷贝的时候咱们说一下,咱们写上它叫访问数据的方式为数组的变量加索引就可以了,你给它赋值是我们的加索引,我访问它也是加索引,所以呢,我们这里写上它,诶我们就叫names加上一个中括号,我们给它一个零啊,然后再来我们写上一个一,然后再来我们写上一个二就可以了。点完了以后,同学们看一下我这里的两个零,我第一个给的是张三,我第二个给的是照六,所以呢,我们当前的这个零的位置数据已经变成了我们的照六。懂我的意思吗?同学们,那我第二个放的是我们的李四对不对?所以我说一下它是李四,那如果呢,我们的第三个,我放的是那一个王五呢?哎,所以我们写上一个王五就可以了,好跟着我的数据就变成了这个样子,来咱们验证一下。
10:10
运行,运行以后你会发现我们就是赵六,李四和王五没有任何的问题,对不对?同学们,这个能不能明白,我相信这个还是好明白的吧,但是你会发现是不是有点麻烦呀,什么叫麻烦呢?我们这个里面啊,好像感觉除了索引不一样以外,别的是不是都是一样的呀?你像这个呀,数据不一样,那没办法了,对吧?你给不同的小格子放不同的数据,你只能挨个往里放吧,但是我们这个好像除了索引以外没有别的不一样了,那怎么办?我们完全可以通过循环的方式来完成这个访问的过程,就是把索引啊作为我的循环变量,让它不断的增加不就好了吗?所以同学们,我们这里这么写啊,来把它改善一下,我们写上后循环,我负循环以后,大家看一下,我写上一个int I等于零,诶会发现零好像恰恰跟这个是一样的,然后呢,我写上它,诶我们写上I小于,小于什么呀,小于几啊,同学们小于我们的三吧,A012对不对?然后呢,我们这里写上一个分号,写上一个I加加。
11:10
啊,那我把这个代码呢,我原封不动,宝贝宝贝以后这就别写零了,你就写个I不就可以了吗?K写上它,你写完它以后,这个咱们可以不要了,然后呢,我们有个分隔符啊,来给它分开,那写个星号给它分隔开,那分隔开以后,现在我运行一下,结果你会发现,哎,这个相对来说还是比较简单的,赵六李四和王五没有任何的问题,对不对,这就是我们宿主的一个基本操作。那既然这个大家能明白的话,同学们,我们上面这个你们觉得怎么样?上面这个是不是跟这个就大同小异了,哎,我们怎么做呢,同学们,我们这么来。有没有发现我们当前的创建对象的方式其实也是固定的呀,都是拗出一个对象来吧,所以咱们把这个呢,咱们也做一下来,我写上它,那么写上叫做user,我们的一,然后给它一个中国号,加上一个叫users,它等于我们的new,咱们的USER1,好,我写个四,是不是等同于我们创建了一个抽屉,里面开辟了四个小格子,对不对?没问题吧?好,那如果没问题的话,它的索引范围应该是我们的0123吧。
12:19
还记得吗?我们的索引范围是我们的零到它的长度减一,长度为四,四减一不就是三吗?所以这个没问题,那既然没问题的话,我们是不是就可以循环的往里面放数据了呢?所以我写上它叫int I等于零,I小于我们的四,然后呢,I加加,这么写不就行了吗?写完了以后,然后呢,我就写上它拷贝,拷贝以后大家看一下,我们写上一个叫,所以叫做I,它等于new,咱们叫U1,同学们能不能明白老师说的这个意思?我这样的话,是不是就循环的把它的每一个小格子放了一个对象进去,你放了一个对象进去的话,那么你总共有四个小格子,那我循环四遍的话,我们不就有四个对象了吗?能不能明白?同学们如果能明白的情况下,那么咱们接下来咱们再给它循环一遍,什么意思啊,我把每一个小格子的数据取出来,然后干嘛呀,去执行它的test方法,所以我们拷贝,拷贝以后这样的话不就把对象取出来了吗?然后填我们的test,诶,你这么写就行了。
13:24
有没有发现就要比之前就会感觉简便了很多,尤其是当我的数据量多的时候,我如果有100条数据呢,你把这改成180,如果是我们的十条呢,改成十条,诶老师呀。那我们能不能得到当前宿主中的容量呢?你不说了吗?我们这有个四吗?每回都写吗?不用,因为啊,咱们宿主当中其实确实有一个属性,它叫点和length跟呢,就是获取当前数组的容量,所以把这个拷贝拷贝以后你这么写就可以了。懂我的意思吗?同学们,我们这么写就没有任何的问题,好,我运行一下,我先把这个注掉啊来。
14:04
六以后我们运行,你会发现我们循环了四遍,那么就会有四个test 1234没有问题吧,我如果改成五呢。我改成五了之后,大家看看我们肯定会打印五个test嘛,就是没有任何问题对不对,你看完全相同,这个呢,就是我们Java的数组的基本操作,好了同学们数组的相关语法和概念,我们就介绍到这里。
我来说两句