这里写自定义目录标题
Java语言基础----数组
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。 数组既可以存储基本数据类型,也可以存储引用数据类型
一维数组的初始化
Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
- 始化的分类:
a:动态初始化: 只指定长度,由系统给出初始化值
b:静态初始化: 给出初始化值,由系统决定长度
注意事项: 这两种方式,只能使用一种,不能进行动静结合 - 动态初始化的格式:
数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
举例: int[] arr = new int[3]; 定义了一个int类型的数组arr,这个数组可以存放3个int类型的值。 - 静态初始化格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…} (也可以简单格式 int[] arr = new int[]{1,2,3} )
二维数组的概述和格式
-
二维数组与一维数组的关系:
二维数组实质上就是每一个元素为一维数组的数组 -
二维数组的格式:
数据类型[][] 变量名 = new 数据类型[m] [n];
m表示这个二维数组有多少个一维数组 必须写上
n表示每一个一维数组的元素个数 可选
举例:
int[][] arr = new int[3] [2];
定义了一个二维数组arr
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[ 2 ]
每个一维数组有2个元素,可以通过arr[m][n]来获取
表示获取第m+1个一维数组的第n+1个元素 -
C:注意事项
A:以下格式也可以表示二维数组
a:数据类型 数组名[][] = new 数据类型[m][n];
b:数据类型[] 数组名[] = new 数据类型[m][n];
这两种格式不推荐使用
B:注意下面定义的区别
int x,y;
int[] x,y[];区别是:
int[] x,y[];//定义了两个数组 一个是一维数组x 一个是二维数组y
x=new int[3];
y=new int[3][];
关于数组的一些异常
- ArrayIndexOutOfBoundsException 数组角标越界异常
例如:int[] arr = new int[]{10, 20, 30};
arr[3]=100; - NullPointerException 空指针异常
int[] arr = new int[]{10, 20};
arr = null;// 人为置空
int length=arr.length;
System.out.println(length);
数组的遍历
public class ArrayDemo {
public static void main(String[] args) {
int[] arr={10,20,50,40,102};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("---------------------------");
//反向遍历
for(int i=arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}
}
}
利用方法返回数组中的最大值
public class ArrayDemo2 {
public static void main(String[] args) {
//获取数组中的最大值或最小值
int[] arr = {10, 20, 50, 40, 102};
int max = getMax(arr);
System.out.println("最大值是" + max);
int[] arr2 = {10, 20, 50, 40, 102,1000,1};
int max1 = getMax(arr2);
System.out.println("最大值是" + max1);
}
public static int getMax(int[] arr){
//定义一个参照值
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
}
~
将一维数组中的元素对调
public class ArrayDemo3 {
public static void main(String[] args) {
//A:
//案例演示:
//数组元素反转(就是把元素对调)
int[] arr = {10, 20, 30, 40, 50}; //50 40 30 20 10
reverseArray(arr);
showArray(arr);
}
//数组元素反转
private static void reverseArray(int[] arr) {
//分析:首尾元素值交换,遍历一半
for (int i = 0; i < arr.length / 2; i++) {
//采用中间变量进行值交换
int t = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = t;
}
}
private static void showArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ",");
}
}
}
根据数组索引输出数组元素
public class ArrayDemo8 {
public static void main(String[] args) {
//A:
//案例演示:
//数组查表法(根据键盘录入索引, 查找对应星期)
//根据索引查元素
//获取跟打印输出是两个概念
String[] arr = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"};
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数 1----7");
int index = scanner.nextInt();
String str = getElementByArray(index, arr);
System.out.println(str);
}
private static String getElementByArray(int index, String[] arr) {
if (index >= 1 && index <= 7) {
return arr[index - 1];
} else {
return "查无此元素";
}
}
}
根据数组元素输出元素索引
public class ArrayDemo9 {
public static void main(String[] args) {
String[] arr = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"};
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个星期");
String str = scanner.nextLine();//获取用户输入的字符串
int index = getIndex(str, arr);
System.out.println("该元素的索引是" + index);
}
private static int getIndex(String str, String[] arr) {
//遍历数组
for (int i = 0; i < arr.length; i++) {
if (str.equals(arr[i])) {
return i;
}
}
return -1; // 一般喜欢用 -1 代表没找到
}
}