Day6 数组和检测输入
数组在程序之中是最重要的一个知识点之一,很多东西都是需要使用数组来进行存放和运算的,我们数组除了正常的迭代方式之外还有特殊的迭代方式,就是前面说要后面要讲的foreach循环
第一章 一维数组
因为想用一个东西那么就得声明,所以紧接而来的就是数组的声明
一维数组声明
首先,我们先回想一下数据的声明,结构是 ,所以数组的声明其实就是多了个组的表现
那我们来声明一下数组,语法有两种,一种是怀旧的🧐,还有一种是java类型的,怀旧的自然是C,这里我就多用一点C的知识去讲一下,看不懂的没必要硬看哈,因为比起零基础接触一个新的东西,还是用比喻比较好接入新的记忆。
一维数组的初始化
那我们来讲讲这个初始化的操作,我们初始化的时候需要跟上的就是
,这个数字很明显,就是这个数组的大小,new是为什么呢,这就该扯到Java抛弃的C的一个特性(明面上的,实际底层还是用着的)
,就是指针,顾名思义,指向一个地方的针,就和指南针一样,只不过这个针是指向地址的,我们用代码去理解一下,因为这里和创建对象一样,都是使用了
这么一个关键字的
我来给大家稍微分析一下,像这个@的后面就是叫做hashcode的一个值,可以理解为在java中的地址,所以他们其实还是指向一个地址的,因为直接打印是出不了的,这个就是有点面向对象的内容了,我们之后再讲,就是现在可以说明的就是我们直接将它丢入到了打印语句里面java入门数组基础educoder,那他会自动调用这个对象的一个方法,那个方法就是默认打印
我们再来看看现在的这两个,是不是一个是long一个是byte的数组啊,对吧,那他们同样都是一维数组,前面是不是都是一个方括号,然后后面跟上一个字母,这里也能看得出来跟的不一定是自己类型的首字母大写
,其实跟什么无所谓,我们要的就是能看懂这个是几维的数组和他的这个new创建的是不是就是有地址的。
接下来我将好好讲讲这个数组的初始化方式
首先就是直接初始化,在我们声明完之后,在任何地方都能进行初始化的这个new 数据类型[(数字)]
这里我就不截图了,毕竟也没有任何的输出内容,接下来我要讲的东西可就厉害了,那就是数组的使用,还记得我之前教循环的时候说的吗,为什么一般我们的循环变量都是从0开始,这个就是为了照顾我们的数组,因为数组我们想要去获取数组里面储存的值,需要通过下标去获取的,然后这个下标就是从0开始的。
一维数组的使用
这里还是需要再讲到一个东西,假如我声明的数是8个,但是因为下标是从0开始的,所以有效获取值的下标是0~
7,然后还有一个属性就是,我使用
我能直接获取数组的长度,猜猜为什么他打印和对象一样,因为他和对象一样里面塞了属性,就和我之前讲的
一样,只不过他的属性是length罢了
是不是还是觉得有点不好,想要放在一排是吗,那也很简单,这个时候我们就只需要对打印方法动动手脚就行了
是不是看到了一点问题,因为没有换行了,所以和下面的命令行贴在了一起,这个时候我们空写一个打印换行就行了
即可
现在我们使用的是静态初始化的,那我们来看看正常初始化的情况
是不是发现了一点不对劲,怎么都是0啊,那必然的,因为我们只是做了声明和默认初始化的操作,默认初始化的操作就是全部初始化为0,那我们只需要手动变更一下即可。
是不是觉得动态的这种初始化非常的灵活,自然,我们一般情况都是会使用这种的初始化,使用静态的情况一般只有一种,就是测试数据的时候,我们拿着一组肯定的数据去做算法啊什么的。
自然我们只需要拿到了数据,就这样从数组之中取出了数据,那我们就能干各式各样的操作了。这就交给大家发挥了。
然后接下来我讲几个比较好用的工具,首先我们需要学习一个小东西,后面也是会教的,现在就浅用一下,那就是导入其他类
这里再讲一个神奇的东西就是循环里说会在数组里面讲的一个东西,现在还是只是了解一下就行了,在非常的后面我们说容器的时候我们再仔细去了解一下这个东西,那这个东西,如果有认真记的人的话会发现就是foreach
第二章 二维数组
二维数组的意思其实就是两个维度的数组,也就是,数组的数组,能理解吗,就是第一维度的数组里面的元素还是数组。可以理解为矩阵了,或者理解为直角坐标系,
二维数组的声明
就是多了一个维度,其实也就是多一个方括号
二维数组的初始化
因为说过了二维数组其实就是数组的数组,所以,第二维度的数组可以自主初始化,也可以被统一初始化,看接下来的例子
,这是一种, ,这是第二种,也就是刚刚说的统一初始化,第一种的方式需要自己继续去初始化,因为是两个维度,所以想要遍历也需要嵌套一下循环
这个就是看自己的需求来进行初始化了,赋值也是一样,通过下标进行赋值
看到这个是不是想到一个东西,那我能用这个东西做个杨辉三角出来吗?自然是可以的!
二维数组的使用
我知道有人会觉得你这不多余吗,判断前一列后一列然后直接赋值1不就好了吗,然后还能少一次遍历,能有这种想法的,说明有基础,如果你本来就是零基础的话,那说明你对算法的亲和度还是不错的。以后会有不错的发展
第三章 基于数组的简单算法
这里不讲难的,就只讲一两个算法,是比较简单的排序算法,因为我们的数组可以乱存东西,这样就不会让他看着很有序,包括遍历出来也不是很有序,所以这里就应该是我们的排序算法出马的时候了
首先第一个算法,是很简单的,叫做冒泡排序,原理很简单,一次一次的遍历数组,然后把小的或者是大的放到后面来,假如有一个数组是这样的
5 1 8 9 4 6 7 3 2 数组原样
5 1 8 4 6 7 3 2 9 一次遍历移动
5 1 4 6 7 3 2 8 9 二次遍历移动
是不是有模有样,大的慢慢排到的后面来
5 1 4 6 3 2 7 8 9 第三次遍历移动
5 1 4 3 2 6 7 8 9 第四次遍历移动
1 4 3 2 5 6 7 8 9 第五次移动
1 3 2 4 5 6 7 8 9 第六次移动
1 2 3 4 5 6 7 8 9 第七次移动
不知道大家看例子能不能看懂,想法已经说明了,所以实现就自己实现一下,然后再来看我的代码,因为写程序就是这么一个过程,先进行想法的构造,然后确定想法,然后再用代码实现出来,使用代码实现出来这一步是非常的困难和重要的
看结果就知道了已经完成了正常的排序
接下来就要告诉大家一个黑科技,也是这个Arrays类里面的一个方法,工具方法,他的作用就是排序,而且速度非常的快,我现在说一下他用的是什么,以后有兴趣的可以自己去研究一下,底层用的是
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25230.html