04 数组

一维数组:

/*
数组
动态格式:
    数据类型[] 数组名 = new 数据类型[数组的长度];
静态格式:
    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
    或:
    数据类型[] 数组名 = {元素1,元素2,...}; //简写的声明和赋值必须在同一行
*/

class
Demo_Array { public static void main(String[] args) { /* int[] arr = new int[5]; System.out.println(arr[0]); // 0 //整数类型默认初始化值为0, // 浮点类型:0.0 布尔类型:false 字符类型 char: \u0000 表示2个字节,即16个二进制位 arr[0] = 5; System.out.println(arr[0]); // 5 System.out.println(arr); // [I@1db9742 // [代表数组,1个是一维,I代表int类型 @ 后面代表十六进制的地址值 */ int []arr1 = new int[3]; int []arr2 = arr1; arr1[0] = 10; arr1[1] = 5; arr2[0] = 20; System.out.println(arr1[0]); System.out.println(arr1[1]); System.out.println(arr2[0]); System.out.println(arr2[1]); /* 打印结果: 20 5 20 5 */ } }


数组异常

class Array_Exception {
    public static void main(String[] args)
    {
        int[] arr = new int[5];
    //    System.out.println(arr[5]); //ArrayIndexOutOfBoundsException: 数组索引越界
        
        arr = null;
        System.out.println(arr[0]); //NullPointerException 空指针异常
    }
}

二维数组:

/*
二维数组格式:
    int[][] arr = new int[m][n];
    数据类型 数组名[][] = new 数据类型[m][n];
    数据类型[] 数组名[] = new 数据类型[m][n];
    int[][] arr = new int[m][];
*/

class
Demo_Array3 { public static void main(String[] args) { int[][] arr = new int[3][2]; //这个二维数组中有3个一维数组,每个一维数组中有2个元素 System.out.println(arr); // [[I@1db9742 System.out.println(arr[0]); // [I@106d69c System.out.println(arr[0][0]); // 0 int[][] arr2 = new int[3][]; // 这个二维数组中有三个一维数组,三个一维数组都没有被赋值 System.out.println(arr2[0]); // null arr2[0] = new int[5]; System.out.println(arr2[0]); // [I@52e922 int[][] arr3 = {{1,2,3},{4,5},{6,7,8,9}}; //这是一个二维数组,这个二维数组中每个大括号都代表一个一维数 组 System.out.println(arr3); //[[I@25154f,二维数组的地址值 System.out.println(arr3[0]); //[I@10dea4e,一维数组的地址值 System.out.println(arr3[0][0]); //1,一维数组中的元素值 } }


参数传递问题:

/*
基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问

Java中到底是传值还是传址?
java中只有传值,因为地址值也是值--java之父
*/
class Test_Array1 {
    public static void main(String[] args)
    {
        int a = 10,b=20;
        System.out.println("a:"+a+"b:"+b); // a:10b:20
        change(a,b);
        System.out.println("a:"+a+"b:"+b); // a:10b:20

        int[] arr = {1,2,3,4,5};
        change(arr);
        System.out.println("arr[1]:"+arr[1]); // arr[1]:4
    }
    public static void change(int a,int b){
        System.out.println("a:"+a+"b:"+b); // a:10b:20
        a = b;
        b = a + b;
        System.out.println("a:"+a+"b:"+b); // a:20b:40
    }
    public static void change(int[] arr){
        for (int i=0;i<arr.length ;i++ )
        {
            if(arr[i]%2==0){
                arr[i] *= 2;
            }
        }
    }
}

 



posted @ 2018-10-23 15:45  fly_bk  阅读(178)  评论(0)    收藏  举报