Java教程

java方法详解

本文主要是介绍java方法详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java方法详解

1.何谓方法?

java方法是语句的集合,它们在一起执行一个功能。

  1. 方法是解决一类问题的步骤的有序组合
  2. 方法包含于类或对象中
  3. 方法在程序中被创建,在其他地方被引用

最好一个方法实现一个功能(原子性)

package method;

public class Demo01 {
    // main方法
    public static void main(String[] args) {
//        int sum = add(1, 2);
//        System.out.println(sum);
        test();
    }
    // 加法
    public static int add(int a,int b){
        return a+b;
    }
    public static void test(){
        // 计算0-100之间奇数和偶数的和
        int a = 0;
        int b = 0;
        for (int i = 0; i <= 100; i++) {
            if(i % 2 == 0){
                a += i;
            }else {
                b += i;
            }
        }
        System.out.println("奇数和为:"+ b);
        System.out.println("偶数和为:"+ a);
    }
}

2.方法的定义和调用

(1).方法的定义

包括方法头方法体

  1. 修饰符
  2. 返回值类型
  3. 方法名
  4. 参数类型(形参,实参):像一个占位符,方法可以不含参数
  5. 方法体

修饰符 返回值类型 方法名(参数类型 参数名){

​ ...

方法体

​ ...

return 返回值;

}

package struct;

import java.util.Scanner;

public class Demo2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        System.out.println(max(a, b));
        scanner.close();
    }
    // 比大小
    public static int max(int num1,int num2){
        if(num1 == num2){
            System.out.println("一样大");
            return 0;  // 终止方法
        }
        if(num1>num2){
            return num1;
        }else {
            return num2;
        }
    }
}

(2).方法的调用

  1. 对象名.方法名(实参列表)
  2. 有返回值:当作一个值
  3. 无返回值:一条语句
  4. 值传递和引用传递

3.方法的重载

重载:在一个类中,有相同的函数名称,但形参不同的函数

简单说,名字相同,参数不同(个数,类型,顺序等等)

返回类型随意,返回类型不足以成为区分重载的因素。

package method;

public class Demo01 {
    // main方法
    public static void main(String[] args) {
        int sum = add(1, 2);
        int add = add(2, 3, 4);// 调用重载add方法
        System.out.println(sum);
        System.out.println(add);
//        test();
    }
    // 加法
    public static int add(int a,int b){
        return a+b;
    }
    // 重载add方法
    public static int add(int a,int b,int c){
        return a+b+c;
    }
    public static void test(){
        // 计算0-100之间奇数和偶数的和
        int a = 0;
        int b = 0;
        for (int i = 0; i <= 100; i++) {
            if(i % 2 == 0){
                a += i;
            }else {
                b += i;
            }
        }
        System.out.println("奇数和为:"+ b);
        System.out.println("偶数和为:"+ a);
    }
}

4.命令行传参

有时候需要运行一个函数的时候再传递给它消息。这要靠main()函数实现

package method;

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

5.可变参数(本质是数组)

jdk1.5开始,java支持传递同类型的可变参数给一个方法

在方法声明在,在指定参数类型后加一个省略号

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

package method;

public class Demo03 {
    public static void main(String[] args) {
//        Demo03 demo03 = new Demo03();
//        demo03.test(1);
        printMax(34, 3, 3, 2, 56.5);
        printMax(new double[]{1, 2, 3});
    }
//    public void test(int... i){
//        System.out.println(i[0]);
//    }
    public static void printMax(double... numbers){
        if(numbers.length == 0){
            System.out.println("no argument passed");
            return;
        }
        double result = numbers[0];
        // 排序
        for (int i = 0; i < numbers.length; i++) {
            if(numbers[i] > result){
                result = numbers[i];
            }

        }
        System.out.println("the max value is " + result);
    }

}

6.递归

递归即自己调用自己

利用递归把复杂问题简化,大大减少了程序的代码量。

递归结构包括:

递归头:什么时候不调用自身方法。

递归体:什么时候需要调用自身方法

package method;

public class Demo05 {
    // 5! 5*4*3*2*1
    public static void main(String[] args) {

        System.out.println(f(5));
    }
    public static int f(int n){

        if(n==1){
            return 1;
        }else {
            return n*f(n-1);
        }
    }
}

递归算法对人类友好,符合人类逻辑,但是对计算机来说不友好,时间复杂度大,尤其是Java这种栈机制的编程语言,为了防止栈内存溢出,最后少使用复杂的,深层的递归算法。

这篇关于java方法详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!