• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
langQ
博客园    首页    新随笔    联系   管理    订阅  订阅
03 java方法详解

java方法详解

方法是语句的集合。目的是解决一类问题。

一个方法只完成一个功能,这样有利于后期的扩展。
(单一职责原理)

java都是值传递!有一个值copy的过程。


public class Demo02 {
    public static void main(String[] args) {
        int max = max(10, 20);
        System.out.println(max);
    }

    //比大小
    public static int max(int num1, int num2) {
        int result = 0;
        if (num1 == num2) {
            System.out.println("num1==num2");
            result = 0; // 终止方法
        }
        if (num1 > num2) {
            result = num1;
        } else {
            result = num2;
        }
        return result;
    }
}

要在命令行执行java命令启动class,需要进到src目录,从这个目录找到包名,才能执行起来。
否则执行不起来。

package com.mysoft.method;

public class Demo03 {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("args["+i+"]: "+args[i]);
        }
    }
}

例如,用命令行方式执行的话,如下:

可变参数

JDK1.5开始,java支持可变参数。
在指定参数类型后面加一个省略号...
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。普通参数必须在它之前。

package com.mysoft.method;

public class Demo04 {
    public static void main(String[] args) {

        //调用可变参数的方法
        printMax(1,2,3,4,56,7,30);
        printMax(new double[]{1,2,3,10,30,20,26});
    }

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

 

递归

 

package com.mysoft.method;

public class Demo06 {
    public static void main(String[] args) {
        System.out.println(f(5));
    }

    // 1! =  1
    // 2! =  2*1
    // 5! =  5*4*3*2*1

    // 2  2*f(1)
    // 3  3*f(2)
    public static int f(int n) {
        if (n == 1) {
            return 1;
        } else {
            return n * f(n - 1);
        }
    }
}


递归的数据不能太大,如果调用自身过多,很可能就堆栈溢出。
传递的数据过大的场合,就得放弃递归,得想其他办法解决。

posted on 2024-03-22 23:21  嚯嚯go  阅读(11)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3