一,一维数组基础
(数组是引用数据类型)
- 数组保存的是一组有顺序的、具有相同类型的数据。在一个数组中,所有数据元素的数据类型都是相同的。可以通过数组下标来访问数组,数据元素根据下标的顺序,在内存中按顺序存放。
- Java的数组可以看作一种特殊的对象,准确地说是把数组看作同种类型变量的集合。在同一个数组中的数据都有相同的类型,用统一的数组名,通过下标来区分数组中的各个元素。
数组在使用前需要对它进行声明,然后对其进行初始化,最后才可以存取元素。下面是声明数组的两种基本形式:
ArrayTypeName[];
ArrayType[]Name;
符号"[]"说明声明了一个数组对象。这两种声明方法没有区别,但是第二种可以同时声明多个数组,用起来比叫方便,所以程序员习惯用第二种。下面声明int型数据举例:
int array1[];
int []array2,array3;//第二种定义多个数组
在第一行中,声明了一个数组array1,它可以用来存放int类型的数据。第二行中,声明了两个数组 array2和array3,效果和第一行的声明方式相同。上面的的语句只是对数组进行了声明,还没有对其分配内存,所以不可以存放,也不能访问它的任何元素。这时候候,可以用new对数组分配内存空间,格式如下:
array1=new int[5];
array1=newint[5];
这时候数组就有了以下5个元素:
array[0]
array[1]
array[2]
array[3]
array[4]
注意!!!在java中下标是从0开始的不是1,这意味着最后一个引索号不是数组的长度,而是比数组长度小1。
Java数组下标从0开始,到数组长度-1结束,如果下标值超出范围,小于下界或大于上界,程序也能通过编译,但是在访问时会抛出异常。下面是一个错误的示例:
public class ArrayException//数组异常类
{
public static void main(String args[])
{
int[]array1=newint[5];//创建一个容量为5的数组 System.out.println(array1[5]);//访问array1[5]
}
程序首先声明了一个大小为5的int类型数组,前面已经讲到,它的下标最大只能是4。但在程序中却尝试访问 array1[5],显然是不正确的。程序会正常通过编译,但是在执行时会抛出异常。程序的运行结果如下:
3.数组初始化
数组在创建后便可以访问数组的各个元素了,这是因为数组在创建是,已经给出了各个类型相应的默认值。(一般是0,0.0,null ,由类型而异)。
创建数组会给一些默认值,但也只是为了避免没值的错误,并没啥意义,所以数组里的值还是按自己需求赋值定义:两种定义方法:
(1)
int[]array1 = new int[5];
array1[0] = 1;
array2[1] = 2;
array3[2] = 3;
array4[3] = 4;
array5[4] = 5;
(2)
int[]array1 = {1,2,3,4,5};
4.java中数组是一种对象,它会有自己的实例变量。事实上数组只有一个公共变量就是length就是它的长度。例如,创建一个下面的数组:
int[]array1 = new int[10]
那么length就为10了,有了length属性,在使用for循环的时候就不要事先知道数组的大小了,写成以下形式:
for{int i = 0;i < arrayName.length;i++}
大致就是这些了还有数组的深入使用以后再更新。
二、二维数组
int[][] array = new int [][];
在new int[][],[][]里面填写自己要的数组范围,前为行后为列。
二维数组的每一个数组的值是一个一维数组,就好比一维数组每一个元素是一个变量,而二维数组的每一个元素其实是一维数组。
例如:
int[][] array = new int[6][6];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
System.out.print(array[i][j]);
System.out.println();
}
}
数组默认值为0
可以利用数组去做游戏地图,一般我们在一开始接触到的数组只会到二维,三维和以上的维度都很难见到不经常用到。
做简单的游戏地图例如:
public class BuildMap {
public int[][] map;
public void bulidMap(int[][] map) {
Random random = new Random();
int count1 = 0;//计数赋值为1的次数
while(count1 < 5) {
int hang = random.nextInt(6);
int lie = random.nextInt(6);
if (map[hang][lie] != 1) {
map[hang][lie] = 1;
count1++;
}
}
System.out.println("----------------游戏地图------------------");
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[i].length; j++) {
System.out.print("位置 " + "[" + i + "]" + "[" + j +"]" + map[i][j] + " ");
}
System.out.println();
}
}
简单在控制器打印出来的游戏地图等以后学了其他前端和图形结合等技术后可以做出有画面的图形化界面。
所以还需要打好基础再接再厉啊!