学习java的第一天
数组
-
一维数组 合并int[] x,y;正确
-
二维数组 int[]y[] ;正确
-
一维数组的两种创建方式:
int [] arr = new int[5]; //动态初始化 int [] arr1 = new int[]{1,2,3}; //静态初始化 int[] arr2 = {1,2,3}; //类型推断
-
二维数组的两种创建方式:
int[][] arr = new int[5][4]; int[][] arr2 = new int[3][];//当二维数组 每个元素数组的元素的个数不确定时使用 // 二维数组动态初始化 int [][] arr1 = new int[][]{{1,2},{3,4}}; // 二维数组静态初始化 // 二维数组的本质 数组的每个元素都是一个一维数组
-
二维数组的遍历方法
for (int i = 0; i < arr1.length; i++) { for (int i1 = 0; i1 < arr1[i].length; i1++) { System.out.print(arr1[i][i1]+" "); }
-
不同类型的一维数组元素的默认初始化值
- 整型:0
- 浮点型:0.0
- char:0
- boolean: false
- 引用类型:null
-
一维数组的内存解析:
-
方法内定义的变量是局部变量 放在栈当中
-
也就是说 new的对象 那个变量 是放在栈当中的
-
对象属于引用类型 存放的是地址值
-
指向的是堆空间中所创建的数组
-
堆空间的数组内存放的是指向方法区当中的常量池中的字符串的地址值
String[] arr = new String[3]; arr[2] = "tom";
-
-
二维数组 的外层元素是引用类型 存放的是地址 内层是数据
-
Math.random 生成的是0.0 到1.0 左闭又开区间的随机数
数组的常见算法
-
冒泡排序
int[] arr = {21,34,56,2,4,23,63,23}; for (int i = 0; i < arr.length; i++) { for (int i1 = i; i1 < arr.length; i1++) { if (arr[i]<arr[i1]){ int num = arr[i1]; arr[i1] = arr[i]; arr[i] = num; } }
-
反转
for (int i = 0; i < arr.length/2; i++) { num = arr[arr.length-i-1]; arr[arr.length-i-1] = arr[i]; arr[i] = num; }
-
复制
for (int i = 0; i < array1.length; i++) { System.out.print(array1[i]); if (i%2==1) array2[i] = array1[i]; else array2[i] = i; }
-
线性查找
for (int i = 0; i < arr.length; i++) { if(finde.equals(arr[i])){ System.out.println("恭喜找到了位置为:"+i); break; } }
-
数组异常
- ArrayIndexOutOfBoundsException: 数组下标越界异常
- NullPointerException空指针异常