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