我叫鱼汤,继续整理笔记。
数组是一种容器,首先它是集合的一种。集合也是一种容器,在java里所有能装数据的容器都是叫集合。其作用就是把一堆数据装进容器统一操作。
一、数组是最简单的一种集合,有三个特点:
1. 只存放相同数据类型的元素,所以声明数组先要声明数据类型;
2. 只能在连续的内存地址存放;
3. 数组是长度是不可变的,看成是常量。所以在声明数组时就得把长度确定好。
二、 数组的声明方式,两种:
1. 数据类型[] 变量名 = new 数据类型[长度]; 数组作为复杂数据类型,它的命名规范跟变量是一样的。
2. 数据类型[] 变量名 = {元素1,元素2,元素3,元素4,元素5};
数组在内存里是由两个部分组成,数组变量名在内存有单独的一块空间存放数组的引用,指向真正存放数组的内存空间。
意思就是这么个意思,所以数组又叫做引用类型。
三、数组的简单操作
数组在被声明好以后,计算机会自动对其做初始化,就是以声明的数据类型存入0。在操作数组时需要给数组每个小空间编号,专业点叫做下标索引,一个长度为n的数组,第一个下标是0,最后一个下标是n-1。只要在[]内填入下标进行赋值,计算机会自动通过引用找到数组锁定对应的空间进行赋值。如:
int[] array = new int[5];
array[0] = 1;
array[2] = 100;
int i = 3;
array[i] = 5;
变量是可以作为下标的,但是变量的值必须在下标以内的整数,否则会出错。这时for循环跟数组很配,for循环的循环控制变量可以同时作为数组的下标使用,可以进行赋值、排序、提取最值、遍历等操作,数组有个得到长度的方法(数组名.length)。操作数组时主要是注意循环控制变量与下标之间的关系;更要主要的是下标不要超过数组长度,否次会出现越界的错误。下面就简单的举几个列子:
1. 赋值
如: int[] array = new int[6];
for(int i = 0; i < array.length; i++){
int j = 1;
array[i] = j++;
}
这样长度为6的数组各个空间依次存入1、2、3、4、5、6。
2. 遍历
如: int[] array = new int[6];
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}
依次打印数组内各空间的值。
3. 冒泡排序
如:int[] array = {1,2,3,4,5,6};
for(int i = 0; i < array.length; i++){
for(int j = i + 1; j < array.length; j++){ //注意i和j的关系
if(array[i] > array[j]){ //如果前面的数字大于后面的数组这交换,用于升序排列
int tem = array[i];
array[i] = array[j];
array[j] = tem;
}
}
}
冒泡排序的所有排序方法中最差的,还有更多的高级算法......
四、字符串
字符串也是一种数组,可以将它转换为char[]。如:String str = "hello";
char[] array = str.toCharArray();
五、二维数组
如:int[][] arrays = new int[5][6]; //概念跟之前的二维循环一样,就像一个5行6列的表格;
int[][] arrays = {{1,2,3,4},{5,6,7,8},{9,10,11,12,13}}//行数就是外面的{}包裹的{}个数,列数就是里面{}中最长一列的数量,其他短的计算机默认用0补齐;
对二维数组要用双重循环操作。