数组本质还是数,是将许多的同类型的数放到一起,这些数在逻辑上,往往是一致的。
建议的初始化方式 int a[] = new int[2];
于是有了长度为2 ,里面是a[0]和a[1]的两个数的数组。
基础知识有:a.length是2 ,里面的序号是0和1。
For循环遍历方案 for(int i;i<a.length;i++){
对a[i]的处理。
}
Foreach遍历,也是上一篇控制流程里面提到的
遍历还有一种是for(object A : AS){
涉及A的内容。
}
上一篇的AS在这里就是a这个数组,object则是int , 当然在后面的集合,则更倾向上面这张写法。。
也就是数组使用,最基本是要注意数组的长度,不能使用比数组更长的,比如上面的a就不能用a[2]这个,不然会直接使程序挂掉,并且产生数组下标越界异常(ArrayIndexOutOfBoundsException)。
在初始化的时候,有很多种方法,包括一开始就初始化好,也有慢慢初始化的。
重点还是看当时使用数组时候的需求。
数组的优势:一个是将很多的数,用同一个变量传递,比如上面的a,就是一个数组,在方法传入参数的时候,仅传入a就可以,而a包含的大量数据,在方法内部,按需获取。
数组在使用层面,是将大量(2个及其以上)的同类型的数据,放到一起,方便管理和作为参数传递。
在使用时,有大量的数组方法,帮助更好的使用数组。
我认为数组是基础,在android的开发中,集合是数组的大成,也是让人体验舒服的代码工具。
数组的实质:
学习数组绕不过的关于内存的知识点:
目前我还处于java和android应用程序的开发,暂时还没有涉及到用到数组内存内容相关的知识,所以,只是简单回忆一下:
数组本身是存在栈内存里面的地址参数,地址参数指向对内存里面的数据。
这样保证了数组是有顺序的,按0,1,2顺序排列。对于数组的修改其实是修改堆内存里面的内容,也就是数据。
这里面更多是可以意会不可言传。
数组这里不深究,是因为java本身弱化了指针的内容。
指针在使用时本身有很多讲究,特别是在传递参数的时候,实参和虚参,什么参数传递进去可以改变,什么参数传递进去不可以改变。
为什么java里面对这个不深究了,我是这样理解的(一家之言):
Java是面向对象的编程,一切参数都是跟着对象走的。
相对的,C语言这类,面向方法编程,其目的是改变数据和参数。
java里的方法是改变对象的内容,改变的主体发生了变化,面向对象编程,处理重心都是对象,而不是传入的参数本身。
Java的大多数方法,传入参数是为了在方法中使用这些参数来改变方法所属对象的其他数据。
也就是说,面向对象变成,传入参数,很少是为了改变参数本身,而是为了改变某对象的某内容。
其实面向对象编程和面向方法发编程,是不同体系,在短小的程序里面,体现不出两者的区别,但是在处理数据较为复杂的编程时,两种方案很容易被感知的,应该说都很好用。