java入门(方法的基本介绍)

方法

1、概述
方法:若干代码组织在一起,实现了一个功能。【function】(c语言)  【method】(java)

方法有什么好处:1)提高代码的复用性,2)减少代码的冗余。
2、格式

在这里插入图片描述

  • 无参无返回值方法的定义
    public static void 方法名(){
      //方法体
    }
    

    无返回值:返回值类型固定为void

    无参:参数列表为空: ()

    注意:方法写在类中方法外【方法不能嵌套】

    方法的调用

    方法定义好后,不会自己运行,需要调用才能执行。主方法被JVM调用的
        调用格式:方法名();
    

    代码运行流程
    在这里插入图片描述

    1.jvm调用main方法
    2.执行main方法里的方法【由上至下执行】
    3.由main方法里的方法名找到对应的方法并执行
    4.执行完毕后返回方法调用处
    5.程序结束
    

    练习

    package com.demo;
    
    public class ArrayPrintEven {
        public static void main(String[] args) {
            printEven();
        }
        public static void printEven() {
            int[] arr = {1,2,3,4,5,6};
            for (int i = 0; i < arr.length; i++) {
                int num = arr[i];
                if (num%2==0) {
                    System.out.println(num + "是偶数");
                }
            }
        }
    }
    
    • 定义方法的三个明确说明
    1. 返回值类型:方法运行后是否有结果返回到方法调用处,如果没有固定为void。如果有这个返回值类型就是返回结果的类型。
    2. 方法名:见名知意,小驼峰。
    3. 参数列表:方法运行后,需要从方法外部传入的数据,可以通过参数进行传递。
  • 带有参数方法的定义

    【定义格式】有参无返回值方法
    public static void 方法名(参数列表){
      
    }
    

    参数列表:方法运行后,需要从方法外部传入的数据,可以通过参数进行传递。

    1. 不需要外部传入数据:无参 ()
    2. 需要从外部传入数据:有参 (参数类型 参数1,参数类型 参数2,…)
      • 参数就是定义在括号中的变量
      • 如果需要定义参数列表,需要知道参数列表:几个参数?各个参数的类型?

练习: 定义一个方法,接收两个int数据,方法内部将这两个数据求和并打印出来

1:返回值类型 void
2:方法名 printSum
3:参数列表 (int a,int b)

public static void printSum(int a,int b){
   	int sum  = a+b;
  	System.out.println(sum);
}

带有参数方法的调用方式及流程图解

【有参方法调用】 方法名(实参);

有参方法调用时,一定要传入和形参对应类型,对应个数的实参。

/*
有参方法调用:
方法名(实参);

实参:实际参数,方法调用时中【实参可以是常量,可以是变量,表达式】
形参:形式参数,在方法参数列表中

注意:有参方法调用时,一定要传入和形参对应类型,对应个数的实参。
实参给形参赋值

 */
public class Demo01 {
    public static void main(String[] args) {

        printSum(100,200); // 100,200 实参
        //printSum(3.14, 6.28); //类型不一致
        //printSum(100 ); //个数不一致
    }


    public static void printSum(int a,int b) { // a,b 形参

        int sum = a + b;

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

    }
}

在这里插入图片描述

练习

/*
定义一个方法,该方法接收一个int整数参数,方法内部打印是输出该数据是否是偶数
1)返回值类型:void
2)方法名:printOuShu
3)参数列表: (int num)

 */
public class Demo03Practice {
    public static void main(String[] args) {
        printOuShu(100); // 常量
        int a = 111;
        printOuShu(a); // 变量

        printOuShu(a+1); //表达式

    }

    public static void printOuShu(int num) {
        if (num % 2 == 0) {
            System.out.println(num + "是偶数");
        } else {
            System.out.println(num + "是奇数");
        }
    }

}
/*
定义一个方法用于打印两个int整数中的较大数,数据来自于方法参数
1)返回值类型:void
2)方法名:printMax
3)参数列表:(int a,int b)

 */
public class Demo04Practice {
    public static void main(String[] args) {
        printMax(100,20 );
    }

    public static void printMax(int a, int b) {
        int max = a > b ? a : b;
        System.out.println("max = " + max);
    }
}
  • 带返回值的方法定义

方法的返回值:方法运行后返回的结果。

返回值类型:方法运行后返回的结果的类型。

【格式】有返回值
public static 返回值类型 方法名(参数列表){
  //如果有返回值,一定需要有一个return语句返回结果
  return 值;
    
  //如果返回值类型为void,可以不用return。也可用
  return ;
}

返回值类型:方法运行后返回的结果的类型

  1. 没有返回值:固定为void
  2. 有返回值:值得类型即返回值类型。例如:定义一个方法对两个int数据求和,并返回结果。 返回值类型即int

如果有返回值,必须使用return语句在方法体中返回结果。

有返回值

public static 返回值类型 方法名(参数列表){
  //如果有返回值,一定需要有一个return语句返回结果
  return 值;
}

return 值;含义:1)表示返回值 2)表示方法运行结束

如果没有返回值,也可以有return

public static void 方法名(参数列表){    
  //如果返回值类型为void,可以不用return。也可用
  return ;
}

return ; 含义:表示方法运行结束

【例如】定义一个方法对两个int数据求和,并返回结果。 返回值类型即int

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

带返回值的方法调用及流程图解

方法得调用:
1)直接调用:适合没有返回值得方法

2)打印调用:System.out.println(方法调用()); 【只能用于有返回值得方法】
3)赋值调用:先定义变量保存方法返回得结果。 【只能用于有返回值得方法】
变量类型 变量 = 方法调用();
注意:变量类型要和返回值类型一致。

注意:
1)没有返回值得方法,不能使用 打印调用,赋值调用,只能使用直接调用。
2)如果有返回值:建议使用 赋值,打印调用,【可以直接调用,但是无法处理方法返回得结果。】


public class Demo01 {
    public static void main(String[] args) {
        //1)直接调用
        getSum(100, 200);
        System.out.println("==========");
        //2)打印调用:System.out.println(方法调用());
        System.out.println(getSum(100, 200));

        System.out.println("==========");
        //3)赋值调用:先定义变量保存方法返回得结果。
        //String sum = getSum(100, 200);
        //String sum2 = 300;
        int sum = getSum(1000, 2000);

        System.out.println(sum);
        System.out.println("=====");
        //没有返回值得方法,不能使用 打印调用,赋值调用,只能使用直接调用。
        test();// 直接调用
        //System.out.println(test()); //打印调用
        //void a = test(); //赋值调用

        //如果有返回值:建议使用 赋值,打印调用,可以直接调用,但是无法处理方法返回得结果。
        getSum(111, 222);

    }


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

    public static void test(){}

}

在这里插入图片描述

【练习】

/*
定义一个方法,该方法接收一个参数,判断该数据是否是偶数,并返回真假值

1)返回值类型:boolean
2)方法名:isOuShu
3)参数列表:一个int  (int a)

 */
public class Demo03Practice {
    public static void main(String[] args) {
        System.out.println(isOuShu(100)); //true
        System.out.println(isOuShu(101)); //false

    }

    public static boolean isOuShu(int a) {
        return a % 2 == 0;
        /*
        System.out.println("Hello World");

        if (a % 2 == 0) {
            return true;
        } else {
            return false;
        }*/
    }

}
/*
设计一个方法可以获取两个数的较大值,数据来自于参数
1)返回值类型: int
2)方法名: getMax
3)参数列表: 2 个int (int a,int b)

 */
public class Demo04Practice {
    public static void main(String[] args) {
        System.out.println(getMax(100,200 )); //200
        System.out.println(getMax(1000,200 )); //1000

    }

    public static int getMax(int a, int b) {
        int max = a > b ? a : b;
        return max;
    }
}
  • 定义方法的注意事项
  1. 方法不能嵌套定义

  2. 返回值类型,必须要和return语句返回的结果类型相同,否则编译失败 。

  3. 不能在return 后面写代码,return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码。

  4. void表示无返回值,可以省略return,也可以单独的书写return;,后面不加数据

方法重载的的概述

  • 什么是重载?同一个类中,存在同名不同参的方法。这些方法就互为重载。

  • 调用方法是通过方法名调用的,调用重载方法不会混乱么?

    【方法名】+【参数列表】 共同选择一个最适合的方法执行。

/*
定义方法,打印两个数的和。

重载方法的好处:能够方便调用方法
如何选择重载方法的调用?【方法名】+【参数列表】  共同选择一个最适合的方法执行。

 */
public class Demo01 {
    public static void main(String[] args) {
        //两个int
        printSum(100, 200);

        //两个double
        //printSum(3.14, 1.414);
        printSum2(3.14, 1.414);

        printSum(1.414, 1.732);

        //两个字符串
        printSum3("Hello", "World");


        byte b1 = 111, b2 = 100;
        printSum(b1, b2); //printSum(int ,int)

        //printSum(3.14, "Hello"); //printSum(double , String) 找不到匹配的方法
        printSum("Hello",3.14 ); //printSum(String ,double)


    }


    public static void printSum(int a, int b) {
        System.out.println(a+b);
    }
    public static void printSum(String a, double b) { //重载
        System.out.println(a+b);
    }

    public static void printSum(double a, double b) {//重载
        System.out.println(a+b);
    }


    public static void printSum2(double a, double b) {//不是重载
        System.out.println(a+b);
    }

    public static void printSum3(String a, String b) {//不是重载
        System.out.println(a+b);
    }
}
重载:同名不同参的方法
  • 同名:方法名相同

  • 不同参:参数列表不同

    1. 个数不同
    2. 个数相同,类型不同
    3. 个数相同,类型相同,参数列表顺序不同

    和参数名,返回值类型,和修饰符没有关系。

方法重载练习

  • 需求1:使用方法重载的思想,设计比较两个数据是否相等的方法,兼容全整数类型byte,short,int,long)
/*
使用方法重载的思想,设计比较两个数据是否相等的方法,兼容全整数类型byte,short,int,long)
 */
public class Demo02Practice {
    public static void main(String[] args) {
        byte a1 = 10, b1 = 20;
        short a2 = 10, b2 = 10;
        int a3 = 10, b3 = 20;
        long a4 = 20, b4 = 20;

        compare(a1, b1); //compare(byte a, byte b)
        compare(a2, b2); //compare(short a, short b)
        compare(a3, b3); // compare(int a, int b)
        compare(a4, b4); //compare(long a, long b)

    }


    //两个byte
    public static void compare(byte a, byte b) {
        System.out.println(a==b);
    }

    //两个short
    public static void compare(short a, short b) {
        System.out.println(a==b);
    }

    //两个int
    public static void compare(int a, int b) {
        System.out.println(a==b);
    }

    //两个long
    public static void compare(long a, long b) {
        System.out.println(a==b);
    }

}

判断哪些方法是重载关系

【同名不同参】

public static void open(){}
public static void open(int a){} 
static void open(int a,int b){}
public static void open(double a,int b){}
public static void open(int a,double b){}
public void open(int i,double d){} //x 和5同名参数相同
public static void OPEN(){} //x 不同名
public static void open(int i,int j){} //x 和3同参

方法的练习

  • 需求1:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]

    System.out.println("Hello1"); //打印Hello并换行
    System.out.print("Hello2"); //打印Hello不换行
    System.out.print("Hello3"); //打印Hello不换行
    
    /*
    设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]
     */
    public class Demo01 {
        public static void main(String[] args) {
            //System.out.println("Hello1"); //打印Hello并换行
            //System.out.print("Hello2"); //打印Hello不换行
            //System.out.print("Hello3"); //打印Hello不换行
    
            int[] arr = {11, 22, 33, 44, 55};
            printArray(arr);
        }
    
    
        public static void printArray(int[] arr) {
            //[11, 22, 33, 44, 55]
            //1)先打印一个: [
            System.out.print("[");
            //2)遍历数组,取出元素打印:元素后面加逗号,最后一个加]
            for (int i = 0; i < arr.length; i++) {
                //元素后面加逗号,最后一个加]
                if (i == arr.length - 1) {
                    System.out.println(arr[i] + "]");
                } else {
                    System.out.print(arr[i]+", ");
                }
            }
    
    
        }
    }
    

    设计一个方法用于获取数组中元素的最大值

    public class Demo02 {
        public static void main(String[] args) {
            int[] arr={5,15,2000,10000,100,4000};
    
            System.out.println(getMax(arr)); //10000
    
        }
        //功能实现:获取数组的最大值
        public static int getMax(int[] arr) {
            int max = arr[0];
    
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] > max) {
                    max = arr[i];
                }
            }
    
            return max;
        }
    }
    

方法参数传递概述

形参:方法参数列表中参数。

实参:调用方法时传入的数据。

调用一个有参的方法时,有一个参数传递的过程,本质上就是实参给形参赋值。

方法的参数类型可以是任意的类型:

  1. 基本数据类型
  2. 引用数据类型

基本数据类型作为参数传递特点【形参变,实参不变】

基本数据类型作为形参的特点:形参如果改变了值,实参不会发生改变

/*

基本数据类型作为形参的特点:形参如果改变了值,实参不会发生改变

 */
public class Demo01 {
    public static void main(String[] args) {
        int score = 50;
        System.out.println("main1 = " + score); // 50
        change(score);
        System.out.println("main2 = " + score); // 50



    }


    public static void change(int num) {
        System.out.println("change:1 " + num); // 50
        num = 100;
        System.out.println("change:2 " + num); //100
    }

}

基本数据类型作为参数传递图解

如果需要改变值,可以使用方法的返回值返回数据,然后赋值给实参。
在这里插入图片描述

引用数据类型作为参数传递特点

特点:形参地址不变的情况下,形参内容发生改变,实参内容也会改变。

/*
特点:形参地址不变的情况下,形参内容发生改变,实参内容也会改变。
 */
public class Demo01 {
    public static void main(String[] args) {
        int[] brr = {10, 20, 30};
        System.out.println("main1 = " + brr[0]); //10
        change(brr);
        System.out.println("main2 = " + brr[0]); //100
    }


    public static void change(int[] arr) {
        System.out.println("change1 = " + arr[0]);//10
        arr[0] = 100;
        System.out.println("change2 = " + arr[0]);//100
    }
}

引用数据类型作为参数传递特点

特点:形参地址不变的情况下,形参内容发生改变,实参内容也会改变。

/*
特点:形参地址不变的情况下,形参内容发生改变,实参内容也会改变。
 */
public class Demo01 {
    public static void main(String[] args) {
        int[] brr = {10, 20, 30};
        System.out.println("main1 = " + brr[0]); //10
        change(brr);
        System.out.println("main2 = " + brr[0]); //100
    }


    public static void change(int[] arr) {
        System.out.println("change1 = " + arr[0]);//10
        arr[0] = 100;
        System.out.println("change2 = " + arr[0]);//100
    }
}

引用数据类型作为参数传递图解

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值