JAVA-方法学习

时间:2021-07-30
本文章向大家介绍JAVA-方法学习,主要包括JAVA-方法学习使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

方法的定义

JAVA语言中的“方法”(Method)在其他语言当中也可能被称为“函数”(Function)。对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号“{}”当中,并且起一个名字。使用代码的时候,直接找到名字调用即可。

方法头和方法体的定义

定义方法的部分

修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型: 参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变
量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以
不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。

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

自定义的方法实例

比大小

public class Max {
    public static void main(String[] args) {
        System.out.println(max(20, 20));
    }
    public static  int max(int num1,int num2){
        int result =0;
        if (num1==num2){
            System.out.println("两数相等");
            return 0 ;     //返回会输出0
        }
        if(num1>num2){
            result = num1;
        }else{
            result = num2;
        }
        return  result;
    }
}

方法的重载

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

方法重载的规则

  1. 方法名称必须相同
  2. 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
  3. 方法的返回类型不做要求
  4. 仅仅返回类型不同不足以成为方法的重载

命令行传参

在Dos命令中编译的注意事项:

Dos命令传参遇到的问题

问题一:编码问题

text.java:5: 错误: 编码GBK的不可映射字符
解决: 在编译时改为UTF-8 格式

javac -encoding UTF-8 text.java

问题二:错误: 找不到或无法加载主类 text

解决因为涉及到多个独立库之间的调用,因此要回到根目录下执行
但是编译时需要在最详细的目录下编译,具体到文件

问题三:java text.text This is China

在Dos命令下传入参数-->This is China
即在运行Java 文件后直接导入 参数

源码呈现

package text;
public class text {
    public static void main(String[] args) {
        for (int i = 0; i < args.length ; i++) {  //fori 回车 快速写一个for循环
            System.out.println("agr["+i+"]:"+args[i]);
        }
    }
}

调用可变参数

释意:参数的不确定个数定义(数组的一种呈现)
但一个方法只能定义一个可变参数,且需要定义在该方法参数的最后

可变参数的错误定义

public static int printMax(double...x,int y)
报错:
Vararg parameter must be the last in the list

可变参数的正确定义

public class text {
    public static void main(String[] args) {
        printMax(12,12,23,34,56,7,8);
    }
   public static void printMax(int...number){
        int result = 0;
        result = number[0];
       for (int i = 0; i <number.length ; i++) {
           if (number[i]>result){
               result = number[i];
           }
       } //最大值为:56
       System.out.println("最大值为:"+result);
   }
}

public void test(int...i)
test.test(1,2,3,4,56,7)

对参数i数组化,使其可以只定义一个变量表示多个元素节省变量的定义数量

public class text {
    public static void main(String[] args) {
        text test = new text();
        test.test(1,2,3,4,56,7);
    }
    public void test(int...i){
        System.out.println(i[0]);
        System.out.println(i[1]);
        System.out.println(i[2]);
        System.out.println(i[3]);
    }
}

定义静态参数变量的好处(便于调用)

public class text {
    public static void main(String[] args) {
      test(1,2,3,4,56,7);
    }
    public static void test(int...i) {
        System.out.println(i[0]);
    }
}

在此部分

public static void main(String[] args) {
      test(1,2,3,4,56,7);
    }

可以省去

  text test = new text();
  test.test(1,2,3,4,56,7);

的定义过程(对新手友好,可以直接调用写好的方法)

方法中的递归思想

示例一:用递归实现阶乘

public class text {
    public static void main(String[] args) {
        System.out.println(f(4));//结果为24
    }
    //实现阶乘的递归写法
    public static int f(int n){
        if (n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }
}

实例二:用递归实现累加

public class text {
    public static void main(String[] args) {
        System.out.println(f(4));//结果为10
    }
    //实现阶乘的递归写法
    public static int f(int n){
        if (n==1){
            return 1;
        }else{
            return n+f(n-1);
        }
    }
}

原文地址:https://www.cnblogs.com/chendanyu/p/15081239.html