Java基础三(重载与值传递)

方法重载(overload)

    1.定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数或者参数个数类型不同即可
    “两同一不同:”同一个类、相同的方法
参数列表不同:参数个数不同,参数类型不同
    2.在通过对象调用方法时,如何确定某一个指定的方法
      方法名 -> 参数列表

 public class OverLoadTest {
    public static void main(String[] args){
        OverLoadTest test = new OverLoadTest();
        test.getSum(1, 2);
    }
    //如下四个方法构成重载
    public void getSum(int i, int j){
        System.out.println(1);
    }
    public void getSum(double i, double j){
        System.out.println(2);
    }
    public void getSum(String i, int j){
        System.out.println(3);
    }
    public void getSum(int i, String j){
        System.out.println(4);
    }
//    public int getSum(int i, int j){
//        return 0;
//    }

}
public class OverLoadExer {
    public void mOL(int i){
        System.out.println(i * i);
    }
    public void mOL(int i,int j){
        System.out.println(i * j);
    }
    public void mOL(String s){
        System.out.println(s);
    }
    public int max(int i, int j){
        return (i > j)? i:j;
    }
    public double max(double d1, double d2 ){
        return (d1 > d2)? d1:d2;
    }
    public double max(double d1, double d2,double d3 ){
        double max = (d1 > d2)? d1:d2;
        return (max > d3)?max:d3;
    }
}

变量赋值

    如果变量是基本数据类型,此时赋值的是变量所保存的数据值
    如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值

public class ValueTransferTest {
    public static void main(String[] args){
        int m = 10;
        int n = m;
        System.out.println("**************基本数据类型**************");
        System.out.println("m = " + m + ", n = " + n);

        n = 20;

        System.out.println("m = " + m + ", n = " + n);

        System.out.println("**************引用数据类型**************");
        Order o1 = new Order();
        o1.orderId = 1001;

        Order o2 = o1;
        System.out.println("o1.orderId = " + o1.orderId + ", o2.orderId = " + o2.orderId);
        //o1.orderId = 1001, o2.orderId = 1001

        o2.orderId = 1002;
        System.out.println("o1.orderId = " + o1.orderId + ", o2.orderId = " + o2.orderId);
        //o1.orderId = 1002, o2.orderId = 1002
    }
}

class Order{
    int orderId;
}

方法的形参的传递机制:值传递

    形参:方法定义时,声明的小括号内的参数
    实参:方法调用时,实际传递的数据
    1.值传递机制:
    如果参数是基本数据类型,此时赋值的是实参所保存的数据值
    如果参数是引用数据类型,此时实参赋值给形参的是实参所保存的数据的地址值

public class ValueTransferTest1 {
    public static void main(String[] args){
        int m = 10;
        int n = 20;
        System.out.println("m = " + m + ", n = " + n);
        //m = 10, n = 20

        ValueTransferTest1 test = new ValueTransferTest1();
        test.swap(m ,n);

        System.out.println("m = " + m + ", n = " + n);
        //m = 10, n = 20
    }
    public void swap(int m, int n){
        int temp = m;
        m = n;
        n = temp;
        System.out.println("swap里边的" + "m = " + m + ", n = " + n);
        //swap里边的m = 20, n = 10
    }
}
public class ValueTransferTest2 {
    public static void main(String[] args){
        Data data = new Data();

        data.m = 10;
        data.n = 20;

        System.out.println("m = " + data.m + ", n = " + data.n);

        //交换m和n的值
//        int temp = data.m;
//        data.m = data.n;
//        data.n = temp;

        ValueTransferTest2 test = new ValueTransferTest2();
        //m = 10, n = 20

        test.swap(data);

        System.out.println("m = " + data.m + ", n = " + data.n);
        //m = 20, n = 10

    }
    public void swap(Data data){
        int temp = data.m;
        data.m = data.n;
        data.n = temp;
    }
}

class Data{
    int m;
    int n;
}

可变形参的方法

   具体使用:
   格式: 数据类型 … 变量名
   传入的参数可以是不限个
   可变形参的方法与本类中方法相同,形参不同可以构成
   可变形参的方法与本类中方法相同,形参类型也相同的数组之间不可以构成重载,二者不能共存

public class MethodArgsTest {
    public static void main(String[] args){
        MethodArgsTest test = new MethodArgsTest();
        test.show(12);
        test.show("hello");
        test.show("hello", "hello", "hello");
    }

    public void show(int i){
        System.out.println(1);
    }
    public void show(String  str){
        System.out.println("String");
    }
    public void show(String ... str){
        System.out.println("show...String");
    }
//    public void show(String[] str){
//        System.out.println("show...String");
//    }



}

递归调用


public class RecursionTest {
    public static void main(String[] args) {
        //计算1到100的所有数的和
        //方法一
        int sum = 0;
        for(int i = 1 ;i <= 100;i++){
            sum += i;
        }
        System.out.println(sum);
        //方法二
        RecursionTest test = new RecursionTest();
        int a = test.getSum(100);
        System.out.println(a);

        int b = test.getSum1(5);
        System.out.println(b);

        int c = test.f(10);
        System.out.println(c);

        int d = test.fib(5);
        System.out.println(d);


    }
    public int getSum(int n){
        if(n ==1 ){
            return 1;
        }else{
            return n + getSum(n - 1);
        }
    }

    public int getSum1(int n){
        if(n ==1 ){
            return 1;
        }else{
            return n * getSum(n - 1);
        }
    }
    //f0=1,f1=4,fn+2=2*fn+1 + fn,=->>f10
    public int f(int n){
        if (n == 0){
            return 1;
        }else if(n == 1){
            return 4;
        }else{
            return 2 * f(n - 1) + f(n - 2);

        }
    }
    //fibonacci数列
    public int fib(int n){
        if (n == 0)  {
            return 0;
        }
        if ((n == 1) || (n == 2)){
            return 1;
        }

        return fib(n - 1) + fib(n - 2);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值