折叠

Java全栈第三篇-方法初探

一、定义方法的基本格式

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

1、 修饰符: public static 固定写法 (初期仅当记忆)

2、返回值类型: 表示方法运行的结果的数据类型 (即return后的返回值所属的类型),方法执行后将结果返回到调用处 (通常为main所调用的位置)

3、 参数列表:法在运算过程中的未知数据,由参数类型和参数名称两部分组成(即创建方法中括号中的数据,只定义不赋值,参数如果有多个,使用逗号进行分隔),调用处调用方法时传递(调用处在调用方法时,会往括号中赋值)

4、return:将方法执行后的结果带给调处,方法执行到return ,整体方法运行结束(在没有返回值数据时可以省略不写)

 

//要求:调用方法打印一个五行十列的星形矩阵
public class JuZhen {
    public static void main(String[] args) {
        method1();
    }

    public static void method1() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

//测试结果:
**********
**********
**********
**********
**********

 

二、定义方法两个明确及注意事项

1、两个明确:

(1)明确返回值类型:知道自己调用方法需要返回的结果是什么类型。(通过计算的值的类型可以推出返回值类型)

(2)明确参数列表:调用方法计算时参与计算的值的数据类型和数据个数。

2、方法调用的流程图解:

3、定义方法的注意事项:

(1)方法定义的先后顺序无所谓。
(2)方法定义必须是挨着的,不能在一个方法的内部定义另外一个方法。
(3)方法定义之后,自己不会执行的;如果希望执行,一定要进行方法的调用。

 

三、三种调用方法格式

1、单独调用:方法名称(参数);

2、打印调用:System.out.println(方法名称(参数));

3、赋值调用:数据类型 变量名称 = 方法名称(参数);

4、注意事项:若返回值类型为void,这种方法只能单独调用,不能进行打印调用和赋值调用。

 

public class Method2 {

    public static void main(String[] args) {
        // 单独调用
        sum(15, 25);//40

        // 打印调用
        System.out.println(sum(15, 25)); // 40
       
        // 赋值调用
        int number = sum(15, 25);
        number =number+100;
        System.out.println("变量的值:" + number); // 140
    }

    public static int sum(int a, int b) {
        
        return (a+b);
    }

}

 

四、有参数和无参数方法的比较

1、含参数方法:一个方法需要数据进行对比、运算时,通常采用含参数的方法(即小括号内参数列表内含有参数)。

2、不含参数方法:一个方法不需要数据进行对比、运算时,通常采用不含参数的方法(即小括号内参数列表内不含有参数)。

 

源代码:
public class MethodCan { public static void main(String[] args) { System.out.println("两个数大小是否相等" + method1(3, 4)); method2(); } //定义一个方法能够对两个数的大小是否相等 public static boolean method1(int a, int b) { return (a == b); } //定义一个方法能够连续输出十次I am a bird public static void method2() { for (int i = 0; i < 10; i++) { System.out.println("I am a bird" + (i + 1)); } } } 运行结果:
两个数大小是否相等false I am a bird1 I am a bird2 I am a bird3 I am a bird4 I am a bird5 I am a bird6 I am a bird7 I am a bird8 I am a bird9 I am a bird10

 

五、有返回值和无返回值的比较

1、有返回值:通过一系列的运算或者判断得到的结果,调用处需要调用它的值,此时需要采用(return  + 返回值)向调用处发送返回值。

2、无返回值:通过一系列的运算或者判断得到的结果,调用处不需要调用它的值,此时返回值类型采用void且不需要(return+返回值)向调用处发送返回值。(通常表现为直接采用输出语句输出数据)

 3、注意事项:

(1)对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。

(2)返回值与参数无关,有参数可能有返回值,也可能没有返回值。

(3)对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。

(4)一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。(如if-else语句中针对不同情况可能使用不同的return)

 

源代码(同上,仅加上分析):
public class MethodCan { public static void main(String[] args) { System.out.println("两个数大小是否相等" + method1(3, 4)); method2(); } //定义一个方法能够对两个数的大小是否相等,需要返回一个boolean值 public static boolean method1(int a, int b) { return (a == b); } //定义一个方法能够连续输出十次I am a bird,不需要返回值,只需要输出即可 public static void method2() { for (int i = 0; i < 10; i++) { System.out.println("I am a bird" + (i + 1)); } } } 运行结果:
两个数大小是否相等false I am a bird1 I am a bird2 I am a bird3 I am a bird4 I am a bird5 I am a bird6 I am a bird7 I am a bird8 I am a bird9 I am a bird10

 

六、关于定义方法的三个小练习

1、题目:定义一个方法,用来判断两个数字是否相同。

源代码:

public class MethodTest1 {
    public static void main(String[] args) {
        System.out.println("这两个数字是否相等:"+mathod1(25,25));
    }
    public static boolean mathod1(int a,int b){
        boolean result = (a==b);
        return result;

    }
}

运行结果:
这两个数字是否相等:
true

 

2、题目:求出1到100之间的所有的和

源代码:

public class MethodTest2 {
    public static void main(String[] args) {
        System.out.println("结果是:"+getSum());
    }
    public static int getSum(){
        int sum= 0;
        for (int i = 1; i <= 100; i++) {
            sum=sum+i;
        }
        return sum;
    }
}

运行结果:
结果是:
5050

 

3、题目:实现不定次数打印

源代码:
public class MethodTest3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); getNumber(sc.nextInt()); } public static void getNumber(int num){ for (int i = 0; i < num; i++) { System.out.println("Hello World!"+(i+1)); } } } 测试数据:8

运行结果:
Hello World
!1 Hello World!2 Hello World!3 Hello World!4 Hello World!5 Hello World!6 Hello World!7 Hello World!8

 

七、方法的重载(Overload)

1、背景:为什么会想到采用重载

         答:重复的进行相同形式的运算时,会用到很多的方法名称,而这一系列方法的作用又近乎相同,所以采用方法的重载。

2、定义:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。(只需要记住唯一一个方法名称,就可以实现类似的多个功能。)

3、因素:

(1)相关因素:参数列表:个数不同,数据类型不同,多类型顺序不同。

(2)无关因素:与参数名称无关,与方法返回值类型无关

4、重载方法的调用:根据参数列表中参数的个数、类型、多类型顺序的不同,调用不同的方法。

 

源代码:
public class MethodTest4 { public static void main(String[] args) { System.out.println("结果是:" + method(3)); System.out.println("结果是:" + method(3, 4)); System.out.println("结果是:" + method(3, 4, 5)); } //定义一个只有一个参数的method方法 public static int method(int a) { return a; } //定义一个有两个参数的method方法 public static int method(int a, int b) { return (a + b); } //定义一个有三个参数的method方法 public static int method(int a, int b, int c) { return (a + b + c); } } 运行结果:
结果是:
3 结果是:7 结果是:12

八、方法的重载两个练习

1、题目:比较两个数据是否相等,参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试。


源代码:
public class MethodSum { public static void main(String[] args) { byte a = 10; byte b = 20; System.out.println(isSame(a, b)); System.out.println(isSame((short) 20, (short) 20)); System.out.println(isSame(11, 12)); System.out.println(isSame(10L, 10L)); } public static boolean same(byte a, byte b) { boolean same; if (a == b) { same = true; } else { same = false; } return same; } public static boolean same(short a, short b) { boolean same = a == b ? true : false; return same; } public static boolean same(int a, int b) { return a == b; } public static boolean same(long a, long b) { if (a == b) { return true; } else { return false; } } } 运行结果:
false true false true

 

2、题目:模拟输出语句中的println方法效果,传递什么类型的数据就输出什么类型的数据,只允许定义一个方法名println。

源代码:
public class MethodTest5 { public static void main(String[] args) { println(10); } public static void println(byte a) { System.out.println(a); } public static void println(short a) { System.out.println(a); } public static void println(int a) { System.out.println(a); } public static void println(long a) { System.out.println(a); } public static void println(float a) { System.out.println(a); } public static void println(double a) { System.out.println(a); } public static void println(char a) { System.out.println(a); } public static void println(boolean a) { System.out.println(a); } } 运行结果:
10

 

posted @ 2020-04-04 22:46  Coverpast  阅读(261)  评论(0编辑  收藏  举报