Java方法

方法的定义

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

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

方法体

return 返回值;

}

方法名要注意命名规范:第一个字母小写,后面的首字母大写

方法名要注意命名规范:第一个字母小写,后面的首字母大写

public class Demo01 {
    //main方法 public static是修饰符 void是返回值类型,void表示空,即不返回东西,main方法执行完就结束了
    public static void main(String[] args) {
        int sum = add(1, 2);         //输入add(1,2) 然后alt+enter+enter即可自动生成
        System.out.println(sum);          //输出3

    }


    //加法
    public static int add(int a,int b){
        return a+b;
    }

}
public class Demo01 {
    //main方法 public static是修饰符 void是返回值类型,void表示空,即不返回东西,main方法执行完就结束了
    public static void main(String[] args) {
        int sum = add(1, 2);         //输入add(1,2) 然后alt+enter+enter即可自动生成
        System.out.println(sum);          //输出3

    }


    //加法
    public static int add(int a,int b){
        return a+b;
    }

}
/* public class Demo13 { public static void main(String[] args) { //练习2:用for循环输出1-1000之间能被5整除的数,并且每行输出3个 for (int i = 0; i < 1000; i++) { if(i%5==0){ System.out.print(i+"\t"); //因为是print,所以输出不换行,只有"\t"起到了tab的作用 } if(i%(5*3)==0){ System.out.println(); //print输出完不会换行 // System.out.print("\n"); //println输出完会换行 } } } } */
//可以把for循环当作一个方法
public class Demo02 {
    public static void main(String[] args) {
        test();
    }
    public static void test(){      //因为不返回任何东西,所以用void
        for (int i = 0; i < 1000; i++) {
            if(i%5==0){
                System.out.print(i+"\t");
            }
            if(i%(5*3)==0){
                System.out.println();
                // System.out.print("\n");

            }
        }
    }
}
//上下两个方法输出一样
/* public class Demo13 { public static void main(String[] args) { //练习2:用for循环输出1-1000之间能被5整除的数,并且每行输出3个 for (int i = 0; i < 1000; i++) { if(i%5==0){ System.out.print(i+"\t"); //因为是print,所以输出不换行,只有"\t"起到了tab的作用 } if(i%(5*3)==0){ System.out.println(); //print输出完不会换行 // System.out.print("\n"); //println输出完会换行 } } } } */
//可以把for循环当作一个方法
public class Demo02 {
    public static void main(String[] args) {
        test();
    }
    public static void test(){      //因为不返回任何东西,所以用void
        for (int i = 0; i < 1000; i++) {
            if(i%5==0){
                System.out.print(i+"\t");
            }
            if(i%(5*3)==0){
                System.out.println();
                // System.out.print("\n");

            }
        }
    }
}
//上下两个方法输出一样
public class Demo03 {
    public static void main(String[] args) {
        int max = max(10, 20);
        System.out.println(max);            //输出20

    }

    //比大小
    public static int max(int num1,int num2){
        int result=0;
        if(num1==num2){
            System.out.println("num1==num2");
            return 0;  //终止方法
        }
        if(num1>num2){
            result=num1;
        }else{
            result=num2;
        }
        return result;
    }
}
public class Demo03 {
    public static void main(String[] args) {
        int max = max(10, 20);
        System.out.println(max);            //输出20

    }

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

方法的重载

方法重载规则:

方法名称必须相同

方法名称必须相同

参数列表必须不同(个数不同,或类型不同,或参数排列顺序不同等)

参数列表必须不同(个数不同,或类型不同,或参数排列顺序不同等)

方法的返回类型可以相同也可以不同

public class Demo01 {
    //main方法 public static是修饰符 void是返回值类型,void表示空,即不返回东西,main方法执行完就结束了
    public static void main(String[] args) {
        int sum = add(10, 20,30);         //输入add(1,2) 然后alt+enter+enter即可自动生成
        System.out.println(sum);          //输出3

    }


    //加法
    public static int add(int a,int b){
        return a+b;
    }
    public static double add(double a,double b){
        return a+b;
    }
    public static int add(int a,int b,int c){
        return a+b+c;
    }

}
//想调用哪个就调用哪个,互不影响
public class Demo01 {
    //main方法 public static是修饰符 void是返回值类型,void表示空,即不返回东西,main方法执行完就结束了
    public static void main(String[] args) {
        int sum = add(10, 20,30);         //输入add(1,2) 然后alt+enter+enter即可自动生成
        System.out.println(sum);          //输出3

    }


    //加法
    public static int add(int a,int b){
        return a+b;
    }
    public static double add(double a,double b){
        return a+b;
    }
    public static int add(int a,int b,int c){
        return a+b+c;
    }

}
//想调用哪个就调用哪个,互不影响

命令行传参

public class Demo04 {
    public static void main(String[] args) {
        //args.length数组长度
        for (int i = 0; i <args.length ; i++) {   //输入fori然后alt+enter+enter
            System.out.println("args["+i+"]:"+args[i]);

        }
    }
}
/* E:\IdeaProjects\JavaSE\基础语法\src\com\qiantaomaomao\method>javac Demo04.java //右击Demo04在命令行打开,然后输入javac Demo04.java E:\IdeaProjects\JavaSE\基础语法\src\com\qiantaomaomao\method>java Demo04 //发现在这下面运行不了 错误: 找不到或无法加载主类 Demo04 原因: java.lang.NoClassDefFoundError: com/qiantaomaomao/method/Demo04 (wrong name: Demo04) E:\IdeaProjects\JavaSE\基础语法\src\com\qiantaomaomao\method>cd../ //cd../代表返回上一级 E:\IdeaProjects\JavaSE\基础语法\src\com\qiantaomaomao>cd.. E:\IdeaProjects\JavaSE\基础语法\src\com>cd../ E:\IdeaProjects\JavaSE\基础语法\src>java com.qiantaomaomao.method.Demo04 this is qiantaomaomao //需要返回到src包的时候才能执行运行命令 args[0]:this args[1]:is args[2]:qiantaomaomao */
public class Demo04 {
    public static void main(String[] args) {
        //args.length数组长度
        for (int i = 0; i <args.length ; i++) {   //输入fori然后alt+enter+enter
            System.out.println("args["+i+"]:"+args[i]);

        }
    }
}
/* E:\IdeaProjects\JavaSE\基础语法\src\com\qiantaomaomao\method>javac Demo04.java //右击Demo04在命令行打开,然后输入javac Demo04.java E:\IdeaProjects\JavaSE\基础语法\src\com\qiantaomaomao\method>java Demo04 //发现在这下面运行不了 错误: 找不到或无法加载主类 Demo04 原因: java.lang.NoClassDefFoundError: com/qiantaomaomao/method/Demo04 (wrong name: Demo04) E:\IdeaProjects\JavaSE\基础语法\src\com\qiantaomaomao\method>cd../ //cd../代表返回上一级 E:\IdeaProjects\JavaSE\基础语法\src\com\qiantaomaomao>cd.. E:\IdeaProjects\JavaSE\基础语法\src\com>cd../ E:\IdeaProjects\JavaSE\基础语法\src>java com.qiantaomaomao.method.Demo04 this is qiantaomaomao //需要返回到src包的时候才能执行运行命令 args[0]:this args[1]:is args[2]:qiantaomaomao */

可变参数

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

public class Demo05 {
    public static void main(String[] args) {
        Demo05 demo05 = new Demo05();
        demo05.test(11,22,33,44,55,66);

    }
    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]);
        System.out.println(i[4]);
        System.out.println(i[5]);

    }
}
/* 输出: 11 22 33 44 55 66*/
public class Demo05 {
    public static void main(String[] args) {
        Demo05 demo05 = new Demo05();
        demo05.test(11,22,33,44,55,66);

    }
    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]);
        System.out.println(i[4]);
        System.out.println(i[5]);

    }
}
/* 输出: 11 22 33 44 55 66*/

一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

public void test(int x,int...i)  //正确
public void test(int...i,int x)  //错误
public void test(int x,int...i)  //正确
public void test(int...i,int x)  //错误

递归

自己调用自己的方法

自己调用自己的方法

包含两个部分: 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环 递归体:什么时候需要调用自身方法

包含两个部分:

递归头:什么时候不调用自身方法。如果没有头,将陷入死循环

递归头:什么时候不调用自身方法。如果没有头,将陷入死循环

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

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

public class Demo06 {
    public static void main(String[] args) {
        Demo06 test = new Demo06();     //输入new Demo06()然后alt+enter+enter,然后改变量名为test
        test.test();

    }
    public void test(){
        test();
    }
}
//是递归,但是是死循环,因为没有递归头
public class Demo06 {
    public static void main(String[] args) {
        Demo06 test = new Demo06();     //输入new Demo06()然后alt+enter+enter,然后改变量名为test
        test.test();

    }
    public void test(){
        test();
    }
}
//是递归,但是是死循环,因为没有递归头
package com.qiantaomaomao.method;

public class Demo07 {
    //阶乘 例如:5!= 5*4*3*2*1=120
    public static void main(String[] args) {
        System.out.println(f(5));               //输出120
    }
    public static int f(int n){
        if(n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }
}
//边界条件:边界 f(1)=1 即递归头
//前阶段 只要没到边界条件,就一直调用自身 递归体
//返回阶段 n*(n-1)
//递归能不用就不用
package com.qiantaomaomao.method;

public class Demo07 {
    //阶乘 例如:5!= 5*4*3*2*1=120
    public static void main(String[] args) {
        System.out.println(f(5));               //输出120
    }
    public static int f(int n){
        if(n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }
}
//边界条件:边界 f(1)=1 即递归头
//前阶段 只要没到边界条件,就一直调用自身 递归体
//返回阶段 n*(n-1)
//递归能不用就不用

作业-制作简易计算器

写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现 写4个方法:加减乘除 利用循环+ switch进行用户交互 传递需要操作的两个数

写4个方法:加减乘除

利用循环+ switch进行用户交互

传递需要操作的两个数

package com.qiantaomaomao.method;
import java.util.Scanner;
public class Demo08 {


        public static void main(String[] args){
            // 在while语句里面嵌入一个switch语句,在不停循环接收用户输入的时候,判断该执行什么操作
            Scanner scanner = new Scanner(System.in);

            while (scanner.hasNextDouble()){  // while语句不停循环,看是否有用户输入
                double num1 = scanner.nextDouble();  // 接收用户输入的第一个数字
                String symbol = scanner.next();      // 接收用户输入的计算符号
                double num2 = scanner.nextDouble();  // 接收用户输入的第二个数字

                switch (symbol){ // 判断用户输入的计算符号
                    case "+":
                        add(num1,num2);
                        break;
                    case "-":
                        sub(num1,num2);
                        break;
                    case "*":
                        mul(num1,num2);
                        break;
                    case "/":
                        div(num1,num2);
                        break;
                    default:
                        System.out.println("输入的符号不对!");
                }
                System.out.println("输出任意字母退出");  // 当输入字母是就会打破while的循环条件,从而跳出循环,结束程序
            }
            scanner.close();
        }
        //在main方法外面的方法,然后去main方法里调用
        public static void add(double a, double b){  // 加法
            System.out.println(a + b);
        }
        public static void sub(double a, double b){ // 减法
            System.out.println(a - b);
        }
        public static void mul(double a, double b){ // 乘法
            System.out.println(a * b);
        }
        public static void div(double a, double b){ // 除法
            if (b == 0){
                System.out.println("除数不能为零");  // 根据运算规则除数不能为零
            }else {
                System.out.println(a / b);
            }
        }
    }
/* 输出: 3 / 4 0.75 输出任意字母退出 4 * 5 20.0 输出任意字母退出 e Process finished with exit code 0 */
package com.qiantaomaomao.method;
import java.util.Scanner;
public class Demo08 {


        public static void main(String[] args){
            // 在while语句里面嵌入一个switch语句,在不停循环接收用户输入的时候,判断该执行什么操作
            Scanner scanner = new Scanner(System.in);

            while (scanner.hasNextDouble()){  // while语句不停循环,看是否有用户输入
                double num1 = scanner.nextDouble();  // 接收用户输入的第一个数字
                String symbol = scanner.next();      // 接收用户输入的计算符号
                double num2 = scanner.nextDouble();  // 接收用户输入的第二个数字

                switch (symbol){ // 判断用户输入的计算符号
                    case "+":
                        add(num1,num2);
                        break;
                    case "-":
                        sub(num1,num2);
                        break;
                    case "*":
                        mul(num1,num2);
                        break;
                    case "/":
                        div(num1,num2);
                        break;
                    default:
                        System.out.println("输入的符号不对!");
                }
                System.out.println("输出任意字母退出");  // 当输入字母是就会打破while的循环条件,从而跳出循环,结束程序
            }
            scanner.close();
        }
        //在main方法外面的方法,然后去main方法里调用
        public static void add(double a, double b){  // 加法
            System.out.println(a + b);
        }
        public static void sub(double a, double b){ // 减法
            System.out.println(a - b);
        }
        public static void mul(double a, double b){ // 乘法
            System.out.println(a * b);
        }
        public static void div(double a, double b){ // 除法
            if (b == 0){
                System.out.println("除数不能为零");  // 根据运算规则除数不能为零
            }else {
                System.out.println(a / b);
            }
        }
    }
/* 输出: 3 / 4 0.75 输出任意字母退出 4 * 5 20.0 输出任意字母退出 e Process finished with exit code 0 */
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐