Java基础学习——Java基础(十)方法、方法的重载

本文详细介绍了Java编程中的方法定义、格式、调用方式,包括值传递、方法重载的概念。通过实例演示了命令行参数的使用,展示了可变参数的应用以及如何计算最大值。最后,讨论了递归方法的原理和阶乘计算的递归实现。
摘要由CSDN通过智能技术生成

一、方法的定义

 

语句的集合,一个方法只完成一个功能。

System. out.  println()

    类      对象     方法

二、方法的格式

1.修饰符(可选):定义方法的访问类型

2.返回值数据类型:void表示返回空,即没有返回值;int表示返回int类型数据

3.方法名:包含方法名,参数表

4.参数类型:在定义方法时,参数是形参,形参用于在方法被调用时接受外界的数据。当方法被调用时,实际被传给方法的数据为实参。

5.方法体:定义该方法的功能

三、方法的调用

方法有两种调用方式

对象名.方法名(实参列表)

1.当方法返回一个值时,方法调用通常被当做一个值

int larger=max(10,20);

2.当方法返回值为void时,方法调用一定是一条语句

System.out.println(“hello,world”);

5)值传递(Java)和引用传递

Java都是值传递

区别

四、方法重载

1.定义:在一个类中,方法名相同,但形参不同的方法。

2.规则

1)方法名相同,参数列表不同(个数、数据类型、排列顺序)

2)返回值类型可以相同或不同,但只有返回类型不同不是方法重载

public class Demo04 {
    public static void main(String[] args) {
        int max1=max(1,2);  //这里会根据返回是什么类型来判断调用哪一个max函数
        double max2=max(1.0,2.0);
        System.out.println(max1);
        System.out.println(max2);
    }
    public static int max(int a,int b){
        if (a==b){
            return 0;
        }
        if (a>b){
            return a;
        }else {
            return b;
        }
    }
    public static double max(double a,double b){
        if (a==b){
            return 0;
        }
        if (a>b){
            return a;
        }else {
            return b;
        }
    }
}

五、命令行传递参数

//命令行参数,在cmd中运行,接收并输出参数
public class Demo05 {
    public static void main(String[] args) {
        for (int i=0;i< args.length;i++){
            System.out.println("第"+i+"个词为"+args[i]);
        }
    }
}

运行如下

#javac Demo05.java 

  报错:编码GBK的不可映射字符

修改为javac Demo10.java -encoding utf-8

 #java Demo05

  报错找不到或无法加载主类 Demo05

    java.lang.NoClassDefFoundError: com/rzd/method/Demo05

 于是,退回到com目录前,也就是src目录下

修改命令为java com.rzd.method.Demo05  hello world,运行成功。

六、可变参数

1.可变参数的格式为

public static void test(int... i)

2.规则:

1)在方法声明的参数列表中,在可变参数的数据类型后加...

2)一个方法只能指定一个可变参数,必须是方法的最后一个参数。

3.使用

一个可变参数

public class Demo06 {
    public static void main(String[] args) {
        //Demo06 demo06 = new Demo06();
        //demo06.test(1,2,3);
        test(1, 2, 3);
    }

    public static void test(int... i) {
        System.out.println(i[0]);
        //System.out.println(i);这里输出i的话不能输出该数组的值
    }
}

调用可变参数计算数组的最大值 

public class Demo06 {
    public static void main(String[] args) {
        max(1,23,444.0,5,6.0,77);
    }

    public static void max(double... d){
        double result=d[0];
        if (d.length==0){
            System.out.println("no argument passed");
            return;
        }
        for (int i=1;i<d.length;i++){
            if (d[i]>result){
                result=d[i];
            }
        }
        System.out.println("最大值为"+result);
    }
}

七、递归方法

我们可以把” 递归 “比喻成 “查字典 “,当你查一个词,发现这个词的解释中的某个词仍然不懂,于是你开始查这第二个词。第二个词里仍然有不懂的词,于是查第三个词,这样查下去,直到有一个词的解释是你完全能看懂的,那么递归走到了尽头,然后你开始后退,逐个明白之前查过的每一个词,最终,你明白了最开始那个词的意思。(摘自知乎的一个回答)

当我们遇到一个问题时,我们是怎么判断该题用递归来解决的?

1)子问题需与原问题为同样的事,且规模更小;

2)程序具备停止条件。

/*递归
计算阶乘:n!=1*2*3*...*(n-1)*n
f(1)=1;
f(2)=2*f(2-1)=2*f(1)=2*1
f(3)=3*f(3-1)=3*f(2)=3*2*f(2-1)=3*2*1
f(n)=n*f(n-1)
 */

public class Demo07 {
    public static void main(String[] args) {
        int f=f(10);
        System.out.println(f);

    }
    public static int f(int n){
        if (n<1){
            return 0;
        }
        //停止条件
        if (n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值