loading...
数组的基本概念
Published in:2022-01-31 | category: JavaSE基础知识
Words: 775 | Reading time: 3min | reading:

作用

存放一组同数据类型的数据

数组的声明

数据类型[] 数组名

数组的创建

  • ​动态创建
    • 数组名 = new 数据类型[数组长度]
    • 数组名 = new 数据类型[ ]{值1,值2 ,值3···}
  • ​ 静态创建
    • 数据类型[ ] 数组名 = {值1,值2,值3····}

一个程序运行,系统会为其开辟一片运行的空间:进程

可变参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void bianLi(int[] nums){
for(int i = 0 ; i <nums.length ; i++ ){
int num = nums[i];
System.out.print(num + ",");
}
}

//可变参数,可以说是数组的另一种写法,其可以传入不定数量的参数
public static void canChangeParameter(int...nums){
for(int i = 0 ; i <nums.length ; i++ ){
int num = nums[i];
System.out.print(num + ",");
}
}
}

//可变参数调用时可,写如下写法
int[] nums = {1,3,5,7,9};
canChangeParameter(1,3,5,7,9,2,4,6,8,10);
canChangeParameter(nums);

数组常见问题

数组下标越界异常

举例:

1
2
3
4
5
public static void main(String[] args) {
int arr[] = {1,2};
// 此处报数组下标越界异常
System.out.println(arr[2]);
}12345

控制台输出的异常信息为:

1
2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
at cn.com.gjw.MyClass.main(MyClass.java:7)

数组空指针异常

对象数组同基本类型数组相同

1
Test_10 [] students;Test_10 students [];int [] array;int array [];

此时创建的数组,并没有分配到内存空间

内存的分配有两种,一种是静态分配,另一种时动态分配

1
2
students [0] = new Test_10("aaaa", 1);students [1] = new Test_10("bbbb", 2);students [2] = new Test_10("cccc", 3);students [3] = new Test_10("dddd", 4);students [4] = new Test_10("eeee", 5);
Test_10 [] students = { new Test_10("aaaa", 1), new Test_10("bbbb", 2), new Test_10("cccc", 3), new Test_10("dddd", 4), new Test_10("eeee", 5),

这样一个个添加未免效率太低了,并且大多时候,我们并不确定需要有多少记录去存储,如果每次都要改,也太麻烦了

因此想到基本类型数组那样去赋值,但是那样写编译器总是抛出空引用(空指针)异常

空指针异常:空指针就是空引用,java空指针异常就是引用本身为空,却调用了方法,这个时候就会出现空指针异常。可以理解,成员变量和方法是属于对象的(除去静态),在对象中才存在相对应的成员变量和方法,然后通过对象去调用这些成员变量和方法。对于空指针来说,它不指向任何对象,也就没有所谓的成员变量和方法,这个时候用它去调用某些属性和方法,自然就会出现空指针异常了。

1
Scanner sc = new Scanner(System.in);Test_10 [] students = new Test_10[5];for(int i = 0; i < 5; i++) {    String name = sc.next();    int num = sc.nextInt();    students[i] = new Test_10(name,num);}

每次赋值之前,都通过构造器创建对象,因此避免了空指针的出现

增强for循环

1
2
3
for(遍历出的数据类型 变量名 :要遍历的数组或集合){

}
Prev:
集合的基本概念
Next:
数据类型与类型转换
catalog
catalog