1.方法的定义

作为一个java初学者,我们经常会听到方法与函数,但对于两者有何异同并没有深入的了解 。通过查阅资料自己对方法与函数有了初步的认识。

  • 函数: 是一段可以重复调用的代码,通过名字来进行调用。它能将数据传递进去进行一些处理,然后返回数据(或者没有返回值),函数和对象无关。
  • 方法: 也是一段可以重复调用的代码,也通过名字来进行调用的,但是它跟一个对象相关联。方法可以操作类内部由private封装的数据。
    在很多语言中都有函数的定义,但是在咱们JAVA语言中,我们将其称之为方法。简单理解,方法就是完成特定功能的代码块。

2.方法的声明(格式)

方法的格式为:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
  方法体;
  return 返回值;//return 返回值这部分可以没有
 }

方法的格式 参数

说明

修饰符

比较多,后面会详细介绍。目前使用 public static

返回值类型

用于限定返回值的数据类型

方法名

就是一个名称,它的存在是为了方便我们调用方法

参数类型

限定调用方法时传入参数的数据类型

参数名

是一个变量,接收调用方法时传入的参数,这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的

实际参数

说明

方法体

完成功能的代码

return

结束方法以及返回方法指定类型的值

返回值

就是功能的结果,由return带回,带回给调用者

注意:当方法以void关键字声明,那么此方法没有返回值,但可以使用return来结束调用。

package disizhang;

public class FangFaShuoMing {
    public static void main(String[] args) {
        System.out.println("主方法调用");
        show();
        show();
        show();
    }
    /*方法就是对一段功能逻辑的封装,以实现重复调用。
      方法的语法:
      1.方法要定义在类中
      2.方法跟方法是平级关系,不能嵌套定义
      3.权限修饰符 状态修饰符 返回值类型 方法名(参数){ 封装的代码 }
      4.方法不调用,不执行。
      5.可以在主方法里面,通过方法名来调用我们自己定义的方法
      */

    public static void show(){
        System.out.println("helloworld");
        return;//此处的return可以进行省略

    }
}

输出的结果为:

主方法调用
helloworld
helloworld
helloworld

3.方法之求和案例及其调用

package disizhang.diaoyong;

public class XiangJiaDiaoYong {
    public static void main(String[] args) {
        //相加的方法
        add1();
        int sum=add2();
        System.out.println("方法2被调用");
        System.out.println(sum);
    }
    //方法名一般就是小写,多个单词,第一个单词字母小写
    //void 返回值类型,没有明确的返回值类型
    public static void  add1(){
        int a=3;
        int b=5;
        System.out.println("方法1被调用");
        System.out.println(a+b);
        return;//结束方法,方法的没有明确返回值类型,也就void 那么这个return 可以省略不写

    }
    public static int add2() {
       //明确了返回值类型 为 int
        //一旦一个方法,明确了返回值类型,那么必须在方法的最后,由return 带回一个与你明确了数据类型相一致的结果
        int m = 3;
        int n = 3;
        int sum = m + n;
        return sum;//return 结束方法,并返回结果

    }
}

输出的结果为:

方法1被调用
8
方法2被调用
6
package disizhang.diaoyong;

public class Test1 {
    public static void main(String[] args) {
        //以后我们在设计一个方法时,你得考虑两点,1,这个方法要不要参数,要几个参数,参数的数据类型是什么。
        //2.这个方法要不要设计返回值,返回值是什么。
        int sum=add(20,30);
        System.out.println("两个数的和为:"+sum);
    }


    //我们定义在方法括号里面的参数,我们称之为形式参数,简称形参,语法格式 数据类型 参数名 多个参数用逗号隔开
    //形参的作用,就是用来接收调用方法时,传过来的实参
    public static int add(int a, int b) {
        int sum=a+b;
        return sum;
    }

}

输出的结果为:

两个数的和为:50

方法的注意事项

方法不调用不执行

方法与方法是平级关系,不能嵌套定义

方法调用的时候不用在传递数据类型 实参 :可以是常量,也可以是变量

如果方法有明确的返回值,一定要由return带回一个值


4.方法定义和使用的练习

1.键盘录入来获取两个数中的较大值

package disizhang.diaoyong;
import java.util.Scanner;
public class Test2 {
    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入第一个数");
            int a=sc.nextInt();
            System.out.println("请输入第二个数:");
            int b=sc.nextInt();
            int max=zuidazhi(a,b);
            System.out.println("两者中的最大值为:"+max);

    }
    public static int zuidazhi(int a,int b){
        int max;
        if(a>b){
            return max=a;
        }
        else{
            return max=b;
        }
    }

}

输出的结果为:

请输入第一个数:
6
请输入第二个数:
3
两者中的最大值为:6

2.键盘录入来比较两个数是否相等

package disizhang.diaoyong;
import java.util.Scanner;
public class Test3 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个数为:");
        int a=sc.nextInt();
        System.out.println("请输入第二个数为:");
        int b=sc.nextInt();
        bijiao(a,b);
    }
    public static void bijiao(int a,int b){
        if(a==b){
            System.out.println("两个数相等");
        }
        else{
            System.out.println("两个数不相等");
        }
    }

}

输出的结果为:

请输入第一个数为:
3
请输入第二个数为:
5
两个数不相等

3.根据键盘录入的行数,在控制台输出上三角形*

ackage disizhang.diaoyong;
import java.util.Scanner;
public class Test4 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入行数:");
        int i=sc.nextInt();
        printxingxing( i);
    }
    public static void printxingxing(int i){
        for(int k=1;k<=i;k++){
            for(int m=1;m<=k;m++){
                System.out.print("*");
            }
            System.out.println();
        }

    }
}
请输入行数:
3
*
**
***

4.根据键盘录入的数据输出对应的乘法表

package disizhang.diaoyong;

import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入行数:");
        int i=sc.nextInt();
        chengfabiao(i);
    }
    public static void chengfabiao(int i){
        for(int k=1;k<=i;k++){
            for(int m=1;m<=k;m++){
                System.out.print(k+"*"+m+"="+(k*m)+"\t");
            }
            System.out.println();
        }

    }

}

输出的结果为:

请输入行数:
9
1*1=1 
2*1=2 2*2=4 
3*1=3 3*2=6 3*3=9 
4*1=4 4*2=8 4*3=12 4*4=16 
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

5.方法重载概述和基本使用

方法重载概述:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同,与返回值无关,不拿返回值/类型来区分。

参数列表不同:1.参数个数不同 2. 参数类型不同

package disizhang.diaoyong;

public class Test6 {
    public static void main(String[] args) {
        //求多个数相加
        double sum=add(1,2.0);
        int sum2 = add(1, 2, 3);
        int sum3 = add(1, 2, 3, 4);
        // 变量名.sout  快捷输出变量
        System.out.println(sum);
        System.out.println(sum2);
        System.out.println(sum3);

    }

    /*方法重载:允许一个类中可以定义多个同名方法,
   只要,他们的参数个数或参数的类型,不一样就可以。不能返回值类型来区分*/

    public static int add(int a,int b){
        System.out.println("两个int的调用了");
        return a+b;
    }

    public static double add(int a, double b) {
        System.out.println("一个int的一个double调用了");
        return a + b;
    }
    public static int add(int a,int b,int c){

        return a+b+c;
    }
    public static int add(int a,int b,int c,int d){

        return a+b+c+d;
    }
}