学Java-day4

方法的重载

  • 方法名相同
  • 参数列表必须不同(个数、类型、参数排列顺序)
  • 返回类型可同可不同
  • 仅仅返回类型不同不足以成为方法的重载

命令行传参

先在命令窗口javac编译类java执行要在src目录下打上包名.类名 后面再加上参数

可变参数

public void test(int... numbers){//int... numbers 是一个数组, 可放多个参数
    
}
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,其他普通参数需在它之前声明。

递归

  • 递归就是:A方法调用A方法

  • 递归结构包括两个部分:

    • 递归头:什么时候不调用自身方法。如果没有头将陷入死循环
    • 递归体:什么时候需要调用自身方法
  • public void test(int n){
        if(n==1){
            return 1;
        }else{
            return n * test(n-1);
        }
    }
  • java是栈机制,n不能太大。、

数组

  • 数组是相同类型数据的有序集合

  • 数组描述的是相同类型的若干个数据,按一定顺序排列的数据组合而成

  • 每一个数据称作一个数组元素,可以通过下标访问它们从0开始

  • 四个基本特点

    • 其长度是确定的。数组一旦被创建,他的大小就是不可以改变的
    • 其元素必须是相同类型的,不允许出现混合类型
    • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
    • 数组变量属引用类型,数组可以看成是对象,数组中的每个元素相当于改对象的成员变量。数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中。

Java中new出来的都是保存在堆中

稀疏数组

  • 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。

  • 稀疏数组的处理方式是:

    • 记录数组一共有几行几列,有多少个不同值
    • 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
  • 稀疏数组n行3列

    • 第一行第一列记录原数组的列数
    • 第一行第二列记录原数组的行数
    • 第一行第三列记录原数组不同值的个数
    • 第二行开始,第一列为不同值的所在的列数
    • 第二行开始,第二列为不同值的所在的行数、
    • 第二行开始,第三列为不同值的值
  • int[][] a = new int[11][11];
    int[1][2] = 1;
    int[2][3] = 2;
    
    int sum = 0;
    
    for(int i = 0;i<a.length;i++){
        for(int j = 0;j<a[i].length;j++){
            if(a[i][j]!=0){
                sum++;
            }
        }
    }
    
    int[][] a2 = new int[sum+1][3];//创建稀疏数组
    a[0][0] = a.length;
    a[0][1] = a[0].length;
    a[0][2] = sum;
    
    //将非零的值存放在稀疏数组中
    int count = 0;
    for(int i = 0;i<a.length;i++){
        for(int j = 0;j<a[i].length;j++){
            if(a[i][j]!=0){
                count++;
                a2[count][0] = i;
                a2[count][1] = j;
                a2[count][2] = a[i][j];
            }
        }
    }
    
    //还原稀疏数组
    int[][] a3 = new int[a2[0][0]][a2[0][1]];
    
    //给其中数组还原值
    for(int i = 1;i<a2.lenght;i++){
        a3[a2[i][0]][a2[i][1]] = a2[i][2];
    }
    
    
    

学习地址

https://www.bilibili.com/video/BV12J41137hu?p=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值