一:概念
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。 数组既可以存储基本数据类型,也可以存储引用数据类型。 长度是固定的。
二:定义格式
1、数据类型[] 数组名; (推荐使用第一种)
2、数据类型 数组名[];
例:int[] arr
三:初始化
1、动态初始化:在定义时候只给定数组的长度,值是由系统默认给出的。
语句定义格式:数据类型[] 数组名 = new 数据类型[元素的个数];
2、静态初始化:在定义的时候,就手动给出元素值。
语句定义格式:数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2...};
简化格式:数据类型[] 数组名 = {元素值1,元素值2...};
public class Practice {
public static void main(String[] args) {
int[] arr= new int[4];//动态初始化,定义了一个长度为四的数组。
int[] arr2={1,2,3,4}; //静态初始化,定义了一个元素值为1,2,3,4长度为4的数组。
System.out.println(arr[1]);
System.out.println(arr2[1]);
}
}
四:数组遍历
数组遍历:
获取的长度的属性:length
使用格式:数组名.length
五:实战案例
1、数组遍历(依次输出数组中的每一个元素,形式为[1,2,3,4......])
public class Practice {
public static void main(String[] args) {
int[] arr1={1,3,4,6,3,6,4,6,534,3,5,5434,5,9,8,2,64,345};
sa(arr1);
}
public static void sa(int[] arr){
for(int i=0;i<arr.length;i++){
if(i==0){
System.out.print("["+arr[i]+",");
}else if(i==arr.length-1){
System.out.print(arr[i]+"]");
}else {
System.out.print(arr[i]+",");
}
}
}
}
//结果wei:[1,3,4,6,3,6,4,6,534,3,5,5434,5,9,8,2,64,345]
2、获取数组中的最大值
//获取数组中的最大值
public class Practice {
public static void main(String[] args) {
int[] arr1={1,3,4,6,3,6,4,6,534,3,5,5434,5,9,8,2,64,345};
int max=sa(arr1);
System.out.println("最大值为:"+max);
}
public static int sa(int[] arr){
int t=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]>t){
t=arr[i];
}
}
return t;
}
}
//结果为:最大值为:5434
3、数组元素逆序 (就是把元素对调)
//数组元素逆序 (就是把元素对调)
public class Practice {
public static void main(String[] args) {
int[] SuZu1 = {1, 2, 3, 4, 5, 6, 7};
System.out.print("原数组为:");
printArray(SuZu1);
// int[] JieGuo1=sa1(SuZu1);//调用第一种方法,返回值给了suzu1,suzu1已经变成了逆序
// System.out.print("\r\n逆序后为:");
// printArray(JieGuo1);
// int[] JieGuo2=sa2(SuZu1);//调用第二种方法,此方法调用了一个新的数组,返回值给了新数组,suzu1不变。
// System.out.print("\r\n逆序后为:");
// printArray(JieGuo2);
int[] JieGuo3 = sa3(SuZu1);//调用第三种方法,此方法和第一个相同。
System.out.print("\r\n逆序后为:");
printArray(JieGuo3);
}
public static int[] sa1(int[] arr) { //将第一个数与最后一个数调换,第二个数和倒数第二个调换,以此类推,完成逆序。
for (int i = 0; i < arr.length / 2; i++) {
int t = arr[arr.length - i - 1];
arr[arr.length - i - 1] = arr[i];
arr[i] = t;
}
return arr;
}
public static int[] sa2(int[] arr) { //用一个新的数组去逆序的接收目标数组。
int[] arr1 = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
arr1[arr.length - i - 1] = arr[i];
}
return arr1;
}
public static int[] sa3(int[] arr) { //用第一个和第二个调换,在把第二个与第三个调换。。。直到最后一个,第一个被换到了最后;
for (int i = arr.length - 1; i > 0; i--)//在用第一个第二个。。这次换到倒数第二个;以此类推。
for (int j = 0; j < i; j++) {
int t = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = t;
}
return arr;
}
public static void printArray(int[] arr) { //标准格式输出数组的方法
for (int i = 0; i < arr.length; i++) {
if (i == 0) {
System.out.print("[" + arr[i] + ",");
} else if (i == arr.length - 1) {
System.out.print(arr[i] + "]");
} else {
System.out.print(arr[i] + ",");
}
}
}
}
4、数组查表法(根据键盘录入索引,查找对应星期)
/*
数组查表法(根据键盘录入索引,查找对应星期)
*/
import java.util.Scanner;
public class Practice {
public static void main(String[] args) {
String[] week = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
Scanner sc = new Scanner(System.in);
boolean falg=true;
while(falg) {
System.out.println("请输入一个正确的数:");
int a= sc.nextInt();
if (a > 0 & a < 8) {
System.out.println("对应的星期为:" + week[a-1]);
falg=false;
}else {
System.out.println("输入的数据有误,请重新输入!");
}
}
}
}
六:二维数组
1、概念:元素是由一维数组组成的数组。
2、定义:
(1)定义格式一:
数据类型[][] 数组名 = new 数据类型[m][n];
m:表示的是有多少个一维数组
n:表示的一维数组的元素个数
举例:int[][] arr = new int[3][2];
表示的是定义一个有3个长度为2的一维数组组成的二维数组。
(2)定义格式二:
数据类型[][] 数组名 = new 数据类型[m][];
m:表示的是有多少个一维数组
举例:int[][] arr = new int[4][]; //表示有4个一维数组
(3)定义格式三:
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2,元素3...},...};
简化格式:数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2,元素3...},...};
(4)注意:
1、以下几种写法也是二维数组
数据类型[] 数组名[];
数据类型 数组名[][];
2、格式3不能与格式1、格式2混合使用。
错误格式:int[][] arr = new int[2][]{{1,2},{3,1,2}};
3、实战案例:
(1)二维数组遍历求和操作:用二重循环求出二维数组b所有元素的和:
int[][] b={{11},{21,22},{31,32,33}};
public class SuZu5 {
public static void main(String[] args) {
int[][] b={{11},{21,22},{31,32,33}};
int a=printA(b);
System.out.println(a);
}
public static int printA(int[][] arr ){
int sum=0;
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
sum+=arr[i][j];
}
}
return sum;
}
}