一、数组
用于批量保存一类数据,是引用数据类型之一。
变量的格式:数据类型 变量名 = 值;
int a = 10;
int a;
a = 10;
二、声明一个数组
int[] scores;
String[] names;
Person[] persons;
三、为数组初始化并赋值
1、静态初始化:初始化操作和赋值操作同时进行
scores = new int[]{55, 66, 77, 88, 99};
2、动态初始化:初始化操作和赋值操作分开进行
names = new String[3];//创建一个数组用new;创建一个String类型的数组,把它赋值给变量names
names[0] = "张三";
names[1] = "李四";
names[2] = "王五";
四、数组的遍历
String n = names[0];
System.out.println(n);
System.out.println(names[1]);
System.out.println(names[2]);
1、使用普通 for 循环遍历数组
for(int i = 0; i < names.length; i++){
System.out.println(names[i]);
}
2、使用增强 for 循环遍历数组
for(被遍历数组中元素的数据类型 变量名 : 被遍历的数组){
}
for(String n : names){
System.out.println(n);
}
注意:增强 for 循环不擅长修改数组中元素的值
五、数组的特点
①无论是静态初始化还是动态初始化,在初始化时必须指明长度
②数组中每个元素位置都具有索引值(下角标、下标),索引值从0开始,到数组的长度 - 1
③用于获取数组长度的属性:length
六、数组的默认值
基本数据类型
byte short int —> 0
long --> 0L
float —> 0.0F
double —> 0.0D
char —> ‘\u0000’
boolean —> false
引用数据类型 —> null
|–类(class)
|–接口(interface)
|–数组([])
七、数组的常见异常
1、数组下标越界异常
int[] array = new int[5];
array[6] = 100; //数组下标越界异常:ArrayIndexOutOfBoundsException
2、空指针异常
Person[] persons = new Person[3];//{new Person(), new Person("张三", 18), null}
persons[0] = new Person();
persons[1] = new Person("张三", 18);
for(int i = 0; i < persons.length; i++){
Person p = persons[i];
System.out.println(p.say());//null.say(); //空指针异常:NullPointerException
}
八、二维数组
1、声明一个二维数组
int[][] array;
2、二维数组的初始化并赋值
①静态初始化:初始化操作和赋值操作同时进行
array = new int[][]{ {1,2,3}, {4,5,6}, {7,8} };
②动态初始化:初始化操作和赋值操作分开进行
方式一:
array = new int[3][4];//{ {0,0,0,0}, {0,0,11,0}, {0,22,0,0} }
array[1][2] = 11;
array[2][1] = 22;
方式二:
array = new int[3][];//{{0}, {0,11}, {0,0,0}}
array[0] = new int[1];
array[1] = new int[2];
array[2] = new int[3];
array[1][1] = 11;
3、二维数组的遍历
for(int i = 0; i < array.length; i++){
int[] arr = array[i];
for(int j = 0; j < arr.length; j++){
System.out.print(arr[j] + "\t");
}
System.out.println();
}
for(int i = 0; i < array.length; i++){
for(int j = 0; j < array[i].length; j++){
System.out.print(array[i][j] + "\t");
}
System.out.println();
}
for(int[] arr : array){
for(int a : arr){
System.out.print(a + "\t");
}
System.out.println();
}
九、命令行参数(了解)
class HelloWorld{
public static void main(String[] args){
for(String str : args){
System.out.println(str);
}
//将 String 转换为 int
int num = Integer.parseInt(args[0]);
}
}
//注意:当执行 java HelloWorld 123 bbb ccc 命令时,JVM会将执行名单的参数封装进数组,传递给 main 方法
十、可变参数
可变参数:调用方法时可以传递0个或多个对应类型的实参
注意:
①可变参数与数组参数之间不能构成重载
②可变参数必须写在当前参数列表的末尾
class HelloWorld{
public static void main(String[] args){
int[] arr = new int[]{1,2,3,4,5};
int sum = add(arr);
}
//需求:计算两个整数的和
/*public static int add(int a, int b){
return a + b;
}
//需求:计算三个整数的和
public static int add(int a, int b, int c){
return a + b + c;
}*/
/*public static int add(int[] arr){//可变参数与数组参数之间不能构成重载
int sum = 0;
for(int i = 0; i < arr.length; i++){
sum += arr[i];
}
return sum;
}*/
public static int add(int ... arr){//可变参数:调用方法时可以传递0个或多个的实参
int sum = 0;
for(int i = 0; i < arr.length; i++){
sum += arr[i];
}
return sum;
}
public static int add(double d, Person...persons){
}
}