不想学习的小狐狸

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

数组的元素是通过索引访问的,数组索引从0开始

获取数组长度

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

    }
}

结果:

posted on 2021-05-06 21:02  一只小狐狸kis  阅读(99)  评论(0)    收藏  举报