Java学习笔记_05

来源:互联网 发布:淘宝网服务器 编辑:程序博客网 时间:2024/05/21 15:38

一、二维数组

二维数组就是一个元素为一位数组。

初始化方式之一(指定有多少个长度相同的一位数组):

数据类型[][] 变量名 = new 数据类型[m][n];

m表示这个二维数组有多少个一位数组

n表示每一个一维数组中的元素个数

public static void main(String[] args) {//定义一个三个长度不意义样的一位数组的二维数组,并遍历int[][] arr = {{1,2},{3,4,5},{6,7,8,9,0}};//利用for循环遍历二维数组for (int i = 0; i < arr.length; i++) {//拿到每一个一维数组之后,遍历一位数组中的每一个元素for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j]+" ");}System.out.println();}}}
二维数组的静态初始化:
静态初始化:
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
例子: 公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99

public static void main(String[] args) {//创建对应的二维数组int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};//遍历二维数组并将每一个元素的值加起来int sum = 0;for (int i = 0; i < arr.length; i++) {//拿到每一个一维数组之后,遍历每一个一维数组,加起来for (int j = 0; j < arr[i].length; j++) {sum+=arr[i][j];}}System.out.println(sum);}}
二、形式参数问题

public static void main(String[] args){int a = 10;int b = 20;System.out.println("a:"+a+",b:"+b); //10,20change(a,b);System.out.println("a:"+a+",b:"+b); //?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); //10,20a = b; b = a + b; System.out.println("a:"+a+",b:"+b);/20,40}public static void change(int[] arr) { for(int x=0; x<arr.length; x++) {//如果数组的元素值是偶数,就变为以前的2倍。if(arr[x]%2==0) {arr[x]*=2; }}}}



结论:
如果形式参数是基本类型:
形式参数的改变,不影响实际参数。
如果形式参数是引用类型:
形式参数的该变,直接影响实际参数。

三、数组的高级操作

冒泡排序

基本概念:相邻的两个元素进行比较,小的放前面,大的放后面。

public static void main(String[] args) {int[] arr = { 24, 69, 80, 57, 13 };System.out.println("--------------------");//使用for循环改进上面的代码for (int j = 0; j < arr.length-1; j++) {//外层循环控制比较的次数for (int i = 0; i < arr.length - 1 - j ; i++) {//-1是为了防止数组越界,-j是为了提高比较的效率if (arr[i]>arr[i+1]) {//找一个中间变量int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}}printArr(arr);}//写一个方法打印数组public static void printArr(int[] arr){for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+"  ");}System.out.println();}
选择排序

从0索引开始,依次和后面的每一个元素进行比较
第一次比较完毕,最小值出现在了最小索引处
   第二次比较完毕,次小值出现在了次小索引处
   ...
   完毕后,就排序了。


public static void main(String[] args) {int[] arr = { 24, 69, 80, 57, 13 };for (int j = 0; j < arr.length-1; j++) {for (int i = j+1; i < arr.length; i++) {if (arr[j]>arr[i]) {int temp = arr[j];arr[j] = arr[i];arr[i] = temp;}}}printArr(arr);}//写一个方法打印数组public static void printArr(int[] arr){for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+"  ");}System.out.println();}}
Arrays数组工具类

成员方法:
  public static String toString(int[] a):把数组转成字符串

               public static void sort(int[] a):对数组进行排序(有重载)

public static void main(String[] args) {//public static String toString(int[] a):把数组转成字符串int[] arr = {1,2,4,5,5};//打印上面数组的字符串表示形式String arrStr = Arrays.toString(arr);System.out.println(arrStr);System.out.println("----------");char[] chs = {'a','d','f','g'};String chsStr = Arrays.toString(chs);System.out.println(chsStr);}


0 0