Day4
数组的学习
数组的使用
for-each循环
//遍历数组
for (int i : array)
{
}
相当于直接把array数组里的一个元素直接赋值给i,这样遍历挺快,但是没有下标。
数组做为方法入参
数组做为返回值
都很好理解就是把数组作为一个数据类型即可。
多维数组
定义二维数组
int[][] array=new int[5][4];
多维数组即可看成是数组的数组
比较基础
Array类
挺方便
Arrays.toString() 打印数组元素
Arrays.sort() 从小到大排序
Arrays.fill(int[] , 0) 初始化
数组的排序,挺简单的,冒泡排序
稀疏数组
当一个数组里大部分值为0,或者说是大部分都为同一个数值时,可以使用
思想就是用压缩算法
在一个二维数组里面 由于大部分值都一样,所以只需要记录那几个特殊的不一样的值
稀疏数组的第0 的第一个数值代表有多少行,第二个数值代码有多少列,第三个数值代表有多少个特殊值
然后后面就是该特殊值在哪一个行哪一列,值是什么
开始把二维数组转换为稀疏数组
稀疏数组也是二维数组不过固定两列
组成方法就是,先遍历二维数组得到特殊值的个数
然后再新建一个二维数组,也就是稀疏数组
int[][] array2=new int[sum+1][3];// 稀疏数组
array2[0][0]=arrays.length;
array2[0][1]=arrays[0].length;
array2[0][2]=sum;
然后再遍历一次二维数组,把特殊值所在的行,列和值分别记录在稀疏数组一行的三个列里
此时稀疏数组就成型了
这个稀疏数组也能转化为二维数组
通过第一行得到二维数组的行和列与特殊值
再把后面几行的值直接做完新二维数组的下标进行赋值就还原了。
面向对象
java的核心就是面向对象编程(OOP) 和C++一样
三大特性
封装 继承 多态
思想
面对问题先考虑什么分类,再对各个分类进行思考,最后再对分类下的细节进行面向过程的思考
就是把复杂问题简单化,细分后一个一个逐步完成
本质:以类的方式组织代码,以对象的组织封装数据
抽象
把有相同点的部分抽取出来,提取
比如人是类 可以分为教师 ,学生这些是对象。
思考
今天复习了数组,和熟悉的C++相比,数组的功能确实挺多,都不用再写函数可以直接调用,创建也有很多方式,通过数组也可以使用强化for循环,只不过不会有数组的下标。了解了稀疏数组,这个确实是新知识,可以把一个很大的数组压缩成比较小的,而且能很快找到特殊点的位置,便于使用。
然后就剩最后的面向对象了,这个学完javase也就差不多了,下一个我会选择多线程,注解和反射来进行学习,明天就可以把javase完结,恐怕要学一天了,毕竟到现在那个static我还没完全了解,只会单单的使用。
今天先回顾一下面向对象的概念,和当初学C++的时候差不多。