Java学习笔记02
方法
可变参数
在方法声明中,指定参数类型后面加一个省略号 ...
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public class Demo01 { public static void main(String[] args) { //调用可变参数的方法 printMax(34,12,3,3,2); printMax(new double[]{1,2,3}); } public static void printMax(double...numbers){ if(numbers.length==0){ System.out.println("No argument passed"); return; } double result = numbers[0]; //排序 for (int i = 1; i < numbers.length; i++) { if(numbers[i]>result){ result = numbers[i]; } System.out.println("The max value is"+ result); } } }
数组声明创建
首先必须声明数组变量,才能在程序中使用数组
dataType[] arrayRefVar;//首选的方法
Java语言使用new操作符来创建数组,语法如下:
data Type[] arrayRefVar = new dataType[arraySize];
获取数组长度
arrays.length
//静态初始化 int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)}; //动态初始化,包含默认初始化 int[] b = new int[10]; b[0]=10
public class ArrayDemo01 { public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; //打印全部的数组元素 for (int i = 0; i < arrays.length; i++) { System.out.println(arrays[i]); } System.out.println("==========="); //计算所有元素的和 int sum = 0; for (int i = 0; i < arrays.length; i++) { sum = sum+arrays[i]; } System.out.println("sum="+sum); System.out.println("==========="); //查找最大元素 int max = arrays[0]; for (int i = 1; i < arrays.length; i++) { if(arrays[i]>max){ max = arrays[i]; } } System.out.println("max="+max); } }
public class ArrayDemo02 { public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; //printArray(arrays); int[] reverse=reverse(arrays); printArray(reverse); } //反转数组 public static int[] reverse(int[] arrays){ int[] result = new int[arrays.length]; for(int i=0,j=result.length-1;i<arrays.length;i++,j--){ result[j]=arrays[i]; } return result; } //打印数组元素 public static void printArray(int[] arrays){ for (int i = 0; i < arrays.length; i++) { System.out.println(arrays[i]+" "); } } }
public class ArrayDemo03 { public static void main(String[] args) { //创建一个二维数组11*11 , 0:没有棋子 1:黑棋 2:白棋 int[][] array1 = new int[11][11]; array1[1][2] = 1; array1[2][3] = 2; //输出原始的数组 System.out.println("输出原始的数组"); for(int[] ints : array1){ for(int anInt :ints){ System.out.print(anInt+"\t"); } System.out.println(); } System.out.println("============"); //转换为稀疏数组保存 //获取有效值的个数 int sum = 0; for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if(array1[i][j]!=0){ sum++; } } } System.out.println("有效值的个数:"+sum); //创建一个稀疏数组的数组 int[][] array2 = new int[sum+1][3]; array2[0][0] = 11; array2[0][1] = 11; array2[0][2] = sum; //遍历二维数组,将非零的值存放到稀疏数组中 int count = 0; for (int i = 0; i < array1.length; i++) { for (int j = 0; j < array1[i].length; j++) { if(array1[i][j]!=0){ count++; array2[count][0] = i; array2[count][1] =j; array2[count][2] = array1[i][j]; } } } //输出稀疏数组 System.out.println("输出稀疏数组"); for (int i = 0; i < array2.length; i++) { System.out.println(array2[i][0]+"\t" +array2[i][1]+"\t" +array2[i][2]+"\t"); } System.out.println("============"); System.out.println("还原"); //读取稀疏数组 int[][] array3 = new int[array2[0][0]][array2[0][1]]; //给其中的元素还原它的值 for (int i = 1; i < array2.length; i++) { array3[array2[i][0]][array2[i][1]] = array2[i][2]; } //打印 System.out.println("输出还原的数组"); for(int[] ints : array3){ for(int anInt :ints){ System.out.print(anInt+"\t"); } System.out.println(); } } }
结果:

浙公网安备 33010602011771号