阅读 162

黑马程序员Java课程笔记004方法与方法重载

黑马程序员Java课程笔记004方法与方法重载

第一章 开发工具IntelliJ IDEA

1.1 IDEA常用快捷键

file–>settings–>editor–>font 改变字体大小


快捷键 功能

Alt+Enter 导入包,自动修正代码

Ctrl+Y 删除光标所在行

Ctrl+D 复制光标所在行的内容,插入光标位置下面

Ctrl+Alt+L 格式化代码

Ctrl+/ 单行注释,再按取消注释

Ctrl+Shift+/ 选中代码注释,多行注释,再按取消注释

Alt+Ins 自动生成代码,toString,get,set等方法

Alt+Shift+上下箭头 移动当前代码行

在IDEA工具中,Ctrl+空格的快捷键,可以帮助我们补全代码,但是这个快捷键和Windows中的输入法切换快捷键冲突,需要修改IDEA中的快捷键

File–>Settings–>keymap–>Main menu–>code–>Completion–>Basic

修改Module

File–>New–>Module新建java项目

File–>New–>Module from balabalaaa…


第二章 方法

2.1 复习简单方法的使用

package cn.itcast.day04.demo02;


/*

复习一下此前学习方法的基础入门知识。

定义格式:

public static void 方法名称(){

    方法体

}

调用格式:

方法名称();

注意事项:

1. 方法定义的顺序无所谓。

2. 方法定义必须是挨着的,不能在一个方法的内部定义另一个方法。

3. 方法定义后自己是不会执行的,如果想要执行需要调用。

*/

public class Demo01Method {

    public static void main(String[] args) {

        printMethod();

    }

    public static void printMethod(){

        for (int j = 0; j < 5; j++) {

            for (int i = 1; i < 20; i++) {

                System.out.print("*");

            }

            System.out.println();

        }

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

2.2 方法的定义格式

package cn.itcast.day04.demo02;

/* 方法其实就是若干语句的功能集合。

* 方法是一个工厂。

* 蒙牛工厂       原料:奶牛、饲料、水

*               产出物:奶制品

* 钢铁工厂       原料:铁矿石、煤矿

*               产出物、钢铁建材

* 参数(原料):就是进入方法的数据

* 返回值:从方法中出来的数据。

* 定义方法的完整格式:

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

*       方法体

*       return 返回值;

* }

* 修饰符:现阶段的固定写法,public static

* 返回值类型:也就是方法最终产生的数据结果是什么类型

* 方法名称,方法的名字,规则和变量一样,小驼峰

* 参数类型:进入方法的数据是什么类型

* 参数名称:进入方法的数据对应的变量名称

* PS:参数如果有多个,使用逗号进行分割隔

* 方法体:方法需要做的事情,若干行代码

* return:两个作用,第一停止当前方法,第二将后面的结果数据返回值还给调用处

* 返回值:方法执行最终产生的数据结果。

* 注意:

* return后面的返回值,必须和方法名称前面的“返回值类型”,保持对应。

* 定义一个两个int相加的方法,三要素:

* 返回值类型:int

* 方法名称:sum

* 参数列表:int a, int b

* 方法的三种调用格式:

* 1. 单独调用:方法名称(参数)

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

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

*/

public class Demo02MethodDefine {

    public static void main(String[] args) {

        // 单独调用 

        sum(1,2); // 3

        System.out.println("========");

//        打印调用

        System.out.println(sum(1,3)); // 4

        System.out.println("========");

//        赋值调用

        int number = sum(15,25); // 40

        System.out.println("变量的值" + number);

    }

    public static int sum(int a, int b){

        System.out.println("方法执行啦!");

        int result = a + b;

        return result;

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

2.3 有参数和无参数的方法

package cn.itcast.day04.demo02;


/*

有参数:小括号当中有内容,当一个方法需要一些数据条件,才能完成任务的时候,就是有参数。

例如两个数字相加,必须知道两个数字各自多少,才能相加。


无参数:小括号当中留空。一个方法不需要任何数据条件,自己就能独立完成任务,就是无参数。

例如:定义一个方法,打印固定10次HelloWorld。


*/

public class Demo03MethodParam {

    public static void main(String[] args) {

        method1(10,20);

        method2();

    }


    // 两个数字相乘,做乘法,必须知道两个数字是多少,否则无法进行计算

//    有参数

    public static void method1(int a, int b) {

        int result = a * b;

        System.out.println("结果是:" + result);

    }

//    打印输出固定10次文本字符串

    public static void method2(){

        for(int i = 0; i < 10; i++){

            System.out.println("Hello,World!" + i);

        }

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

2.4 有返回值和无返回值方法

有返回值:

调用方法–>找到方法–>传递参数–>执行方法体–>将返回值交还给调用处

无返回值的方法:

调用方法–>找到方法–>传递参数–>执行方法体–>直接结束


package cn.itcast.day04.demo02;


/*

题目要求:定义一个方法,用来求出两个数字之和。(你帮我算,算完之后把结果告诉我。)

题目变形:定义一个方法,用来打印两个数字之和。(你来计算,算完之后你自己负责显示结果,不用告诉我。)


注意事项:

对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。

但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。

*/

public class Demo04MethodReturn {

    public static void main(String[] args) {

//        我是main方法,我来调用你。

//        我调用你,你来帮我计算一下,算完了之后,把结果告诉我的num变量

        int num = getSum(10, 20);

        System.out.println("返回值是:" + num);

        printSum(10,30);

        System.out.println(getSum(2,3)); // 正确写法

        getSum(2,5); // 正确写法,但是返回值没有用到

        System.out.println("============");


        // 对于void没有返回值的方法,只能单独,不能打印或赋值

//        System.out.println(printSum(2,3);); // 错误写法!

//        System.out.println(void); // 错误写法!

//        int num3 = void; // 错误写法!

    }


    // 我是一个方法,我负责两个数字相加

//    我有返回值int,谁调用我,我就把计算结果告诉谁

    public static int getSum(int a, int b) {

        int result = a + b;

        return result;

    }

//    我是一个方法,我负责两个数字相加

//    我没有返回值,不会吧结果告诉任何人,我自己进行打印输出。

    public static void printSum(int a, int b){

        int result = a + b;

        System.out.println("结果是:" + result);

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

2.5 相关练习

练习题1


package cn.itcast.day04.demo03;


public class Demo01MethodSame {

    public static void main(String[] args) {

        System.out.println(isSame(10,20)); // false

        System.out.println(isSame(20,20)); // true

    }

    /*

    三要素:

    返回值类型:boolean

    方法名称:isSame

    参数列表:int a, int b

    */

    public static boolean isSame(int a, int b){

        /*boolean same;

        if(a == b){

            same = true;

        }

        same = false;*/

//        same = a == b ? true : false;

        return a == b;

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

练习题2


package cn.itcast.day04.demo03;

/*

题目要求:

定义一个方法,用来求出1-100之间所有数字的和值。

 */

public class Demo02MethodSum {

    public static void main(String[] args) {

        System.out.println("结果是:" + getSum());

    }

    /*

    三要素:

    返回值:有返回值,计算结果是一个int数字

    方法名称:getSum

    参数列表:数据范围已经确定,是固定的,所以不需要告诉我任何条件,不需要参数。

     */

    public static int getSum(){

        int sum = 0;

        for(int i = 1; i <= 100; i++){

            sum += i;

        }

        return sum;

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

练习题三


package cn.itcast.day04.demo03;

/*

题目要求:

定义一个方法,用来打印指定次数的HelloWorld。

 */

public class Demo03MethodProject {

    public static void main(String[] args) {

        printCount(10);

    }

    /*

    三要素:

    返回值类型:只是进行一大堆打印操作而已,没有计算,也没有结果要告诉调用处

    方法名称:printCount

    参数列表:到底要打印多少次?必须要告诉我,否则我不知道多少次,没法打印。次数:int

     */

    public static void printCount(int num){

        for (int i = 0; i < num; i++){

            System.out.println("Hello,World!" + (i + 1));

        }

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

2.6 方法的注意事项

使用方法的时候,注意事项:


方法应该定义在类中,但是不能在方法中再定义方法。不能嵌套。

方法定义前后顺序无所谓

方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用。

如果方法有返回值,那么必须写上return 返回值;,不能没有。

return后面的返回值数据,必须和方法的返回值类型,对应起来。

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

对于void方法当中最后一行的return可以省略不写。

一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。

package cn.itcast.day04.demo03;

/*

使用方法的时候,注意事项:


1. 方法应该定义在类中,但是不能在方法中再定义方法。不能嵌套。

2. 方法定义前后顺序无所谓

3. 方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用。

4. 如果方法有返回值,那么必须写上“return 返回值;”,不能没有。

5. return后面的返回值数据,必须和方法的返回值类型,对应起来。

6. 对于一个void没有返回值的方法,不能写return后的返回值,只能写return自己。

7. 对于void方法当中最后一行的return可以省略不写。

8. 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。

 */

public class Demo04MethodNotice {

    public static void main(String[] args) {

        

    }

    public static int method1(){

        return 10;

    }

    public static void method2(){

//        return 10; // 错误写法!方法没有返回值,return后面就不能写返回值

        return; // 没有返回值,只是结束方法的执行而已 // 最后一行的return可以不写

    }

    public static int getMax(int a, int b){

        int max;

        if(a > b){

            return a;// max = a;

        }else{

            return b;// max = b;

        }

        // return max;

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

第三章 方法重载

3.1 方法重载的基本使用

package cn.itcast.day04.demo04;

/*

对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。


方法的重载(Overload):多个方法的名称一样,但是参数列表不一样

好处:只需要记住一个方法的名称,就可以实现类似的多个功能。

方法重载与下列因素相关:

1. 参数个数不同

2. 参数类型不同

3. 多类型的顺序不同


方法重载与下列因素无关:

1. 与参数名称无关

2. 与返回值类型无关

 */

public class Demo01MethodOverload {

    public static void main(String[] args) {

//        sumTwo(10,20); // 30

//        sumThree(20,30,40); // 90

//        sumFour(20,30,40,50); // 140

        System.out.println(sum(10.0,20)); // 两个参数的方法

        System.out.println(sum(10,20,30)); // 三个参数的方法

        System.out.println(sum(10,20,30,40)); // 四个参数的方法

    }


    public static int sum(int a, int b){

        System.out.println("有两个参数的方法执行。");

        return a+b;

    }

    public static int sum(double a, double b){

        return (int)(a + b);

    }

    public static int sum(int a,double b){

        return (int)(a + b);

    }

    public static int sum(double a, int b){

        return (int)(a + b);

    }

    public static int sum(int a, int b, int c){

        System.out.println("有三个参数的方法执行。");

        return a + b + c;

    }

//    错误写法!与方法的返回值类型无关

//    public static double sum(int a, int b){

//        return a + b + 0.0;

//    }

    public static int sum(int a, int b, int c, int d){

        System.out.println("有四个参数的方法执行。");

        return a + b + c + d;

    }

//    错误写法!与参数名称无关

//    public static int sum(int x, int y){

//        return x+y;

//    }


}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

3.2 练习题

练习题1


package cn.itcast.day04.demo04;

/*

题目要求:

比较两个数据是否相等

参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,

并在main方法中进行测试。

 */

public class Demo02MethodOverloadSame {

    public static void main(String[] args) {

        byte a = 20;

        byte b = 20;

        System.out.println(isSame(a,b));

        System.out.println(isSame((short)a,(short)b));

        System.out.println(isSame(11,12));

        System.out.println(isSame(10L,10L));

    }

    public static boolean isSame(byte a, byte b){

        System.out.println("两个byte参数方法的执行!");

        boolean same;

        if(a == b){

            same = true;

        }

        else {

            same = false;

        }

        return same;

    }

    public static boolean isSame(short a, short b){

        System.out.println("两个short参数的方法执行!");

        boolean same = a == b ? true : false;

        return same;

    }

    public static boolean isSame(int a, int b){

        System.out.println("两个int参数的方法执行!");

        return a == b;

    }

    public static boolean isSame(long a, long b){

        System.out.println("两个long参数方法的执行!");

        if (a == b){

            return true;

        }else{

            return false;

        }

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

练习题2

判断哪些方法是重载关系


public static void open{} // 正确重载

public static void open(int a){} // 正确重载

static void open(int a, int b){} // 代码错误:和第8行冲突!

public static void open(int a, double b){} // 正确重载

public static void open(double a, int b){} // 代码错误:和第6行冲突!

public void open(int i, double a){} // 代码错误:和第5行冲突!

public static void OPEN{} // 代码正确不会报错,但是并不是有效重载

public static void open(int i, int j){} // 代码错误:和第3行冲突!

1

2

3

4

5

6

7

8

练习题3


package cn.itcast.day04.demo04;

// byte short int long float double char boolean

// String

// 在调用输出语句的时候,println方法其实就是进行了多种数据类型的重载形式。

public class Demo04OverloadPrint {

    public static void main(String[] args) {

        myPrint(100); // int

        myPrint("Hello"); // String


    }


    public static void myPrint(byte num){

        System.out.println(num);

    }

    public static void myPrint(short num){

        System.out.println(num);

    }

    public static void myPrint(int num){

        System.out.println(num);

    }

    public static void myPrint(long num){

        System.out.println(num);

    }

    public static void myPrint(float num){

        System.out.println(num);

    }

    public static void myPrint(double num){

        System.out.println(num);

    }

    public static void myPrint(char zifu){

        System.out.println(zifu);

    }

    public static void myPrint(boolean is){

        System.out.println(is);

    }

    public static void myPrint(String str){

        System.out.println(str);

    }

}


————————————————

版权声明:本文为CSDN博主「软件柠檬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_44005101/article/details/114544166


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐