一
二维数组:一维数组的数组。
动态初始化方式一(指定有多少个长度相同的一维数组): 数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维数组n表示每一个一维数组的元素个数
动态初始化方式二(指定二维数组中有多少个一维数组,每一个一维数组的长度不固定): 数据类型[][] 变量名 = new 数据类型[m][]; 注意: m这个数据必须给出,后面的数据可以不给 需求:定义一个有3个一维数组的二维数组 1.给这个二维数组的每一个一维数组的元素赋值 仅可用此种方式: arr[0] = new int[2]; arr[0][0] = 1; arr[0][1] = 2; 不能用此种方式: /* arr[0] = {1,2}; arr[1] = {5,6,7}; arr[2] = {4}; */ 二维数组的静态初始化: 静态初始化: 数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}}; 简化格式: 数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
二维数组的遍历:一般用两个for循环就可以了
二、形式参数问题 看程序写结果 class ArgsDemo { public static void main(String[] args){ int a = 10; int b = 20; System.out.println("a:"+a+",b:"+b); //a:10,b:20 change(a,b); System.out.println("a:"+a+",b:"+b);//a:10,b:20 a:20,b:40 a:10,b:20 int[] arr = {1,2,3,4,5}; change(arr); System.out.println(arr[1]); //4 } public static void change(int a,int b) { System.out.println("a:"+a+",b:"+b); a = b; b = a + b; System.out.println("a:"+a+",b:"+b); } public static void change(int[] arr) { for(int x=0; x<arr.length; x++) { //如果数组的元素值是偶数,就变为以前的2倍。 if(arr[x]%2==0) { arr[x]*=2; } } } } 结论: 如果形式参数是基本类型: 形式参数的改变,不影响实际参数。 如果形式参数是引用类型: 形式参数的该变,直接影响实际参数。三、.数组的高级操作(冒泡排序,选择排序,数组工具类,练习)
public class ArraysDemo { //sort() 对数组中的元素进行排序 int[] arr = {2,4,1,8,7}; //调用方法对数组进行排序 Arrays.sort(arr); //打印数组中的元素 //printArr(arr); char[] chs = {'c','d','a','e'}; Arrays.sort(chs); //printArr(chs); //toString()方法 String s1 = Arrays.toString(arr); System.out.println(s1); String s2 = Arrays.toString(chs); System.out.println(s2); } private static void printArr(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]+"\t"); } } private static void printArr(char[] arr) { for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]+"\t"); } } }
一:冒泡排序 相邻的两个元素进行比较,小的放前面,大的放后面
public class maopaoSort { public static void main(String[] args) { int[] a={5,9,3,6,1,0}; for (int i = 0; i < a.length-1; i++) { for (int j = 0; j < a.length-1-i; j++) { if(a[j]>a[j+1]){ int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } for (int k = 0; k < a.length; k++) { System.out.print(a[k]+" "); }
//排一行输出一行 System.out.println(); }
//一次性排序完输出 for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } } }
二:选择排序: 2.1 选择排序概念: * 选择排序: * 从0索引开始,依次和后面的每一个元素进行比较 * 第一次比较完毕,最小值出现在了最小索引处 * 第二次比较完毕,次小值出现在了次小索引处 * ... * 完毕后,就排序了。 public class SelectSort { public static void main(String[] args) { int[] a={0,23,15,9,26,7,2}; for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } System.out.println(); System.out.println("*******************************"); for (int i = 0; i < a.length; i++) { for (int j = i+1; j < a.length; j++) { if(a[i]>a[j]){ int temp=a[i]; a[i]=a[j]; a[j]=temp; } } for (int k = 0; k < a.length; k++) { System.out.print(a[k]+" "); } System.out.println(); } System.out.println(); for (int i = 0; i < a.length; i++) { System.out.print(a[i]+"\t"); } } } 三:Arrays数组工具类 3.1 针对数组进行操作的工具类。提供了排序,转换等功能。 3.2 * 成员方法: * public static String toString(int[] a):把数组转成字符串 * public static void sort(int[] a):对数组进行排序(有重载)