数组的概述和定义格式说明
数组存在的意义
  • 存储同种数据类型的多个值
数组的概念
  • 数组是存储同一种数据类型的多个元素的集合,也可以看成是一个容器
  • 数组既可以存储基本数据类型,又可以存储引用数据类型
数组定义格式
  • 数据类型[]数组名=new 数据类型[数组长度]
数组的初始化
什么是初始化
  • 就是为数组开辟连续的内存空间,并为每个数组元素赋予值
动态初始化
  • int[] arr = new int[5]
  • 给出初始化值,由系统决定长度

动态初始化 byte short int long默认初始化值0,float double默认初始化值是0.0,布尔型boolean默认初始化值是false,字符型char默认初始化值是’\u0000’

  • [I@19bb25a [代表一维数组,I代表int类型,@代表16位地址值
静态初始化
  • 静态初始化格式
  • 数据类型[] 数组名=new 数据类型[]{元素1,元素2,…};
  • 简化格式 数据类型[] 数组名={元素1,元素2,…};(简写形式声明和赋值必须在同一行)
  • 不允许动静结合的声明方式
数组操作的两个小问题
  • 数组索引越界异常ArrayIndexOutOfBoundException
  • 空指针异常NullPointerException
数组的遍历
数组的属性:arr.length数组的长度
数组的最大索引:arr.length-1
for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
}
获取最值

public static int getMax(int arr){
int max = arr[0];
for(int i=1;i<=arr.length;i++){
if(max

数组的反转
public static void reverseArray(int[] arr){
    for(int i = 0; i <= arr.length-1; i++){
        int temple=arr[i];
        arr[i]=arr[arr.length-1-i];
        arr[arr.length-1-i]=temp;
    }
}
数组操作:查表法
class Demo11_Array{
    public static void main(String[] args){
        System.out.println("星期"+
        getweek(3));
    }
    public static char getweek(int week){
        char[] arr ={
        ' ','一','二','三','四','五',
        '六','日'};
        return week;
    }
}
数组的基本查找
public static int getIndex(int[] arr,
int value){
    for(int i=0;i<arr.length;i++){
        if(arr[i]==value){
            return i;
        }
    }
    return -1;
}
二维数组
二维数组的概述
二维数组的格式

int[][] arr=new int[3][2];

注意事项
  • 以下格式也可以表示二维数组
  • 数据类型 数组名[][]=new 数据类型[m][n];
  • 数据类型[] 数组名=new 数据类型[m][n];

int x; | int y; | int x,y; |

int[] x; |int[] y; | int[] x,y[]; |

二维数组格式2

int[][] arr = new int[m][]
arr[0]=new int[n]

二维数组格式3

int[][] arr={{1,2,3}{4,5}{1,2,3,4,5,6}}

二维数组的遍历和求和
二维数组的遍历
class Test1_Array{
    public static void main(String[] 
    args){
        int[][] arr=
        {{1,2,3}{4,5}{6,7,8,9}}
        for(int i=0;i<=arr.length;i++){
            for(int j;
            j<=arr[i].length;j++){
                System.out.println
                (arr[i][j]);
            }
            System.out.println();
        }
    }
}
二维数组的求和
需求公司年销售额求和:某公司按照季度和
月份统计数据如下:单位(万元)
第一季度:22,66,44;
第二季度:77,33,88;
第三季度:25,45,65;
第四季度:11,69,99;

代码如下:

class Test_Array{
    public static void main(String[] args){
        int[][] arr=
        {{22,66,44},{77,33,88},
        {25,45,65},{11,69,99}};

        int sum=0;
        for(int i=0;i<=arr.length-1;i++){
            for(int j=0;
            j<=arr[i].length;j++){
                sum=sum+arr[i][j];
            }
        }
        System.out.println(sum);
    }
}
数组值传递

基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失

引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续防伪