1.数组的特点:
(1) 数组中的元素类型必须一致
(2) 数组本身是引用数据类型,但是里面的元素既可以是基本数据类型,也可以是引用数据类型
(3) 数组的长度一旦给定无法改变
2.数组的声明:
数据类型 [] 数组名;
数组类型 数组名[]
3.数组的格式:
(1).数据类型[] 数组名 = new 数据类型[长度];
(2).数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
简写: 数据类型[] 数组名 = {元素1,元素2,元素3…};
4.数组的索引:
数组中元素的序号,从0开始的, 最大值就是数组的长度减1
5.数组内存:
栈: 存储局部变量,方法的执行,没有初始值
堆:new出来的东西;有初始值:
基本: 默认值
引用: null
6.获取数组的长度:
数组名.length
7.数组中的常见异常
(1).空指针异常:java.lang.NullPointerException null调用里面的东西
(2).数组角标越界异常:java.lang.ArrayIndexOutOfBoundsException 索引超出了最大范围
8.形式参数:
位于方法的参数列表中的参数叫做形式参数
9.实际参数:
调用方法的时候 传递的参数叫做实际参数
当形式参数为基本类型的时候,形参的改变不会影响到实参
当形式参数为引用类型的时候,形参的改变会影响到实参
例题1:数组遍历(用for循环)
//打印数组[3,4,5,6,7,8,9]
public class ArrayDemo5 {
public static void main(String[] args) {
int arr[] = {3, 4, 5, 6, 7, 8, 9};
int len = arr.length;
System.out.println("长度为" + len);
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i] + "]");
} else {
System.out.print(arr[i] + ",");
}
}
}
}
例题2:数组工具类封装(自己封装的方法与main方法是平级关系,万万不可嵌套!!!)
//打印字符串数组
public static void printArr(String[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i] + "]");
} else {
System.out.print(arr[i] + ",");
}
}
}
//打印int类型数组
public static void printArr(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i] + "]");
} else {
System.out.print(arr[i] + ",");
}
}
}
//找int类型数组最大值最小值
public static void getMaXAndMin(int[] arr) {
int max = arr[0];
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
int num1 = arr[i];
int num2 = arr[i];
if (num1 > max) {
max = num1;
}
if (num2 < min) {
min = num2;
}
}
System.out.println(max);
System.out.println(min);
}
//交换数组两个值
public static void changeElements(int[] arr) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要交换位置的索引");
System.out.println("请输入第一个索引值");
int i1 = sc.nextInt();
System.out.println("请输入第二个索引值");
int i2 = sc.nextInt();
if (i1 < 0 || i1 >= arr.length || i2 < 0 || i2 >= arr.length) {
System.out.println("输入值错误,请重新输入");
return;
}
System.out.print("交换前:");
ArrayUtil1.printArr(arr);
int temp = arr[i1];
arr[i1] = arr[i2];
arr[i2] = temp;
System.out.print("交换后:");
ArrayUtil1.printArr(arr);
}
//数组逆序排列
public static void reverseArr(int[] arr) {
for(int i=0;i<arr.length/2;i++){
int temp=arr[i];
arr[i]=arr[arr.length-i-1];
arr[arr.length-i-1]=temp;
}
ArrayUtil1.printArr(arr);
}