Loading

JAVA_SE基础——19.数组的定义

数组是一组相关数据的集合,数组按照使用可以分为一维数组、二维数组、多维数组

本章先讲一维数组

不同点:

不使用数组定义100个整形变量:int1,int2,int3;;;;;;

使用数组定义 int i[100]


数组定义:int i[100],只是一个伪代码,只能表示含义的。




一维数组

可以存放上千万个数据,并且这些数据的类型是完全是相同的。

定义数组

  方式1(推荐,更能表明数组类型)

  type[] 变量名 = new type[数组中元素的个数];

  比如:

  int[] a = new int[10];

  数组名,也即引用a,指向数组元素的首地址。

  方式2(同C语言)我认为搞JAVA的 还是建议用1,3 

  type变量名[] = new type[数组中元素的个数];

  如:

  int a[] = new int[10];

  方式3 定义时直接初始化

  type[] 变量名 = new type[]{逗号分隔的初始化值};

  其中红色部分可省略,所以又有两种:

  int[] a = {1,2,3,4};

  int[] a = new int[]{1,2,3,4};

  其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。

数组长度

  Java中的每个数组都有一个名为length的属性,表示数组的长度。

  length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。

例如:int[] x=new int[5];    //通过new关键字创建了一个长度为5,元素类型是int的数组实体。

1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。

2、单精度浮点型(float)的基本类型变量的默认值为0.0f。

3、双精度浮点型(double)的基本类型变量的默认值为0.0d。

4、字符型(char)的基本类型变量的默认为 “/u0000”。

5、布尔性的基本类型变量的默认值为 false。

6、引用类型的变量是默认值为 null。

7、数组引用类型的变量的默认值为 null。关键数组变量的实例后,如果没有没有显示的为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值。


下面用例子来看数组没有赋值的数组初始化值 ..

class Shuzhu01 
{
	public static void main(String[] args) 
	{
		int[] x=new int[10];
		float[] x1=new float[1];
		double[] x2=new double[1];
		char[] x3=new char[1];
		boolean[] x4=new boolean[1];
		System.out.println("int[] x="+x[0]);
		System.out.println("int[] x1="+x1[0]);
		System.out.println("int[] x2="+x2[0]);
		System.out.println("int[] x3="+x3[0]);
		System.out.println("int[] x3="+x4[0]);
		System.out.println("x数组的长度是"+x.length);
	}
}

结果如下图:



如果在使用数组时,不想使用这些默认初始值,也可以为这些元素赋值。接下来通过一个案例来学习如何为数组元素赋值:

public class Shuzu02 {
	public static void main(String[] args) {
		int[] arr = new int[4]; // 定义可以存储4个整数的数组
		arr[0] = 1; // 为第1个元素赋值1
		arr[1] = 2; // 为第2个元素赋值2
		// 下面的代码是打印数组中每个元素的值
		System.out.println("arr[0]=" + arr[0]);
		System.out.println("arr[1]=" + arr[1]);
		System.out.println("arr[2]=" + arr[2]);
		System.out.println("arr[3]=" + arr[3]);
	}
}

结果是:


注意事项

每个数组的索引都有一个范围,即0~length-1. 在访问数组的元素时,索引不能超出这个范围,否者程序会报错

下面用一个例子来体现:

public class ShuzuZhuyi01 {
	public static void main(String[] args) {
		int[] arr = new int[4];                     // 定义一个长度为4的数组
		System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素
	}
}

结果如下图:


上图所提示的错误信息是 数组越界异常 ArrayIndexOut0fBoundsException  出现这个异常的原因是数组的长度为4,其索引范围为0~3     代码:

System.out.println("arr[0]=" + arr[4]);

就是访问arr[4]的元素时超出了数组的索引范围。


在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常,接下来通过代码来体现下:

public class ShuzuZuyi02 {
	public static void main(String[] args) {
		int[] arr = new int[3]; // 定义一个长度为3的数组
		arr[0] = 5;	// 为数组的第一个元素赋值
		System.out.println("arr[0]=" + arr[0]);	// 访问数组的元素
		arr = null;		// 将变量arr置为null
		System.out.println("arr[0]=" + arr[0]); 	// 访问数组的元素
	}
}

结果是:


arr = null;	
为空后就会出现此提示:

空指针异常 NullPointerException


不懂的留言或者加企鹅吧654249738



posted @ 2015-07-19 17:02  脚本叔叔  阅读(240)  评论(0编辑  收藏  举报