基本概念
数组的概念:是一种容器,可以同时存放多个数据值
数组的特点:
1.数组是一种引用数据类型
2.数组当中的多个数据,类型必须统一
3.数组的长度在程序运行期间不可改变
定义数组
注意
- 静态初始化没有直接指定长度,但仍会自动推算到长度。
- 静态初始化标准格可以拆分成两个步骤。
- 动态初始化也可以拆分成俩个步骤。
- 动态初始化一旦使用省略格式,就不能拆分成俩个步骤。
如果确定数组中的内容就使用静态初始化,不确定数组中的具体内容则使用动态初始化。
import java.util.Scanner;
public class demo02_Array {
public static void main(String[] args) {
//动态定义
//长度不可改变
int[] a = new int[10];
double[] b = new double[5];
String[] c;
c = new String[3];
//静态初始化
int[] d = new int[]{1, 2, 3, 4, 5};
int[] d1 = {1, 2, 3, 4, 5,};
//数组内存地址
System.out.println(a);//[I@1b6d3586
//获取长度
System.out.println(d1.length);
//遍历数组中的元素
for (int i = 0; i < 5; i++) {
System.out.print(d[i] + " ");
}
//输入1 2 3 4 5 6 7 8 9 10
/* Scanner sc = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
a[i] = sc.nextInt();
}*/
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
//b.fori
for (int i = 0; i < b.length; i++) {
System.out.print(b[i] + " ");
}
//比较最大的数
int max = 0;
for (int i = 0; i < d1.length; i++) {
if (max < d1[i]) max = d1[i];
}
System.out.println(max);
//数组反转
int t = 0;
for (int i = 0; i < d.length / 2; i++) {
t = d[i];
d[i] = d[d.length - i - 1];
d[d.length - i - 1] = t;
}
for (int i = 0; i < d.length; i++) {
System.out.print(d[i] + " ");
}
printf(d);
aa();
}
//数组参数参数
public static void printf(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
//返回值为数组
public static int[] aa() {
int[] a = new int[10];
return a;
}
}
越界
java.lang.ArrayIndexOutOfBoundsException
1.数组的索引号从0开始,一直到数组长度-1为止。
2.如果访问数组元素的时候,索引不存在,就会发生数组越界异常。
错误例子:
public class demo02_Array_Crossing {
public static void main(String[] args) {
int[] a = new int[10];
System.out.println(a[10]);//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
}
}
空指针
所有的引用类型变量,都可以赋值为一个null值。但是代表其中什么也没有。
数组必须进行new初始化才能使用其中中的元素。
如果不进行new创建。那么就会发生空指针异常:
java.lang.NullPointerException
错误例子:
public class demo02_Array_Crossing {
public static void main(String[] args) {
int[] a = null ;
System.out.println(a[10]); java.lang.ArrayIndexOutOfBoundsException: 10
}
}
//java.lang.NullPointerException