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; } } } }

浙公网安备 33010602011771号