学过c语言和数据结构的小伙伴应该对数组有了一个深入地了解了,虽然java中的数组和语言大同小异,但由于语法的不同和一些细微的差别,总是让人摸不清格式。
我总结了一下,Java中使用数组的一些易错点。快看看,是不是你走过的坑
1、声明数组的方法:①:int[] array = new int[]{1,2,3,4,5};②(省略写法):int array = {1,2,3,4,5};
方法一中的声明数组,可以将声明和赋值分开写。一般在我们知道数组中具体数值的情况下都用方法二,因为代码简单容易书写。但方法二中的表达式是不拆的。值的注意的是,用第一种方法直接赋值时,后面的int[],方括号内不要写具体的数组长度。
这就是写了具体长度后的,明显编译器直接给我标红了。
第二个就是我将方法二分开写的情况,错误!希望你没有犯错哦。
建议:个人偏向于方法一的写法,这种形式更符合我们的面向对象变成习惯,而且使用灵活我们先声明再赋值也可以。
因为c语言可以创建动态数组,但是java中没有动态数组,这一点要注意!如果你就是想用动态数组,这里有个替代方法,集合———ArrayList,想要深入了解的可以查看API文档。
2、遍历数组,并输出
数组的遍历,比如打印数组中的元素,我们用System.out.print(数组名)是无法得到数组中的元素的,只会得到数组在计算机地址的哈希值。当然这如果是一个集合名,那么将会打印集合内的元素。遍历数组我们只能使用循环,和增强for。
格式:
增强for格式:
增强for中的i与普通for循环中的i可不一样,增强for中的存放的值是数组中对应元素的值。但i的改变并不会影响到数组中的元素,毕竟它存放的仅仅是值而不是地址。
3、对有序数组插入一个新的值
我们可以先创建一个有序的数组,也可以输入数据之后用排序算法对数组进行排序,针对这种简单的学习,冒泡排序即可解决90%的问题了。这里不详述冒牌排序,附代码。主要描述插入值的过程。
首先,我们要插入值,数组就必须要给这个值预留存储空间,假如要插入的值分别是:73、20、41
22 | 31 | 47 | 56 | 72 |
我们从后向前遍历,边比较边移动。也可以先比较再移动,不过会增加复杂度,不建议。
①接下来我们插入73,从后往前走,第一个比较73>72,所以73直接在72后面坐下!
我们接着插入20,和72比较,72>20,因此,72后移一位,(从前往后的优点出现了,不会覆盖数组元素本身的值),接着和56比较,56>20,56后移一位,此时数组的你的情况是22、31、47、56、56、72,可以看出56和72都往后移了已经。继续和47,31,22比较,显然他们往后移了,此时数组内的情况是:
22 | 22 | 31 | 47 | 56 | 72 |
已经比较到了最后一位,因此,将20直接放在第一位即可。即20、22、31、47、56、72
插入41的方法基本上和插入20没有太大区别。都是将比它打的元素后移,在比他小的元素后面坐下!插入代码如下: