10.Java方法学习知识点大全


前言

一、什么是方法

1.什么是方法?

方法是程序中最小的执行单元
在这里插入图片描述
在这里插入图片描述
实际开发中的应用场景
在这里插入图片描述

2.实际开发中,什么时候用到方法?

重复的代码,具有独立功能的代码可以抽取到方法中

3.实际开发中,方法有什么好处?

(1)提高代码的复用性
(2)提高代码的可维护性

二、最简单的方法定义和调用

1.方法的格式

在这里插入图片描述
在这里插入图片描述
起方法名的时候要见名知意,驼峰命名:
一个单词:全部小写
多个单词:从第二个单词开始开头要大写
在这里插入图片描述

2.方法的调用

在这里插入图片描述

public class MethodDemo1 {
    public static void main(String[] args) {
        //目标:掌握最简单的方法定义和调用的格式

        //调用方法,想调用几次就写几次  
        playGame();
        playGame();
    }
    //方法的定义要写在main的外面,类的里面
    //定义一个方法
    public static void playGame(){
        System.out.println("选人物:");
        System.out.println("准备开局");
        System.out.println("对线");
        System.out.println("崩盘");
        System.out.println("骂队友");
        System.out.println("送人头");
        System.out.println("Game Over");
    }
}

在这里插入图片描述

3.看代码说结果

在这里插入图片描述
在这里插入图片描述

4.为什么要有带参数的方法呢?

在这里插入图片描述
在这里插入图片描述

三、带参数的方法定义和调用

1.带参数的方法定义和调用

在这里插入图片描述
在这里插入图片描述

public class MethodDemo2 {
    public static void main(String[] args) {
        //目标:掌握带参数方法定义的格式和调用的格式

        getSum(10,20);//注意个数和类型必须对应

    }

    public static void getSum(int num1,int num2){
        int result=num1+num2;
        System.out.println(result);

    }
}

在这里插入图片描述

2.形参和实参

在这里插入图片描述
在这里插入图片描述

3.人肉计算机1

在这里插入图片描述

public class MethodDemo3 {
    public static void main(String[] args) {
        //需求:定义一个方法,求长方形的周长,将结果在方法中进行打印

        //目标:根据不同的需求,选择定义无参的方法,还是带参的方法
        getlength(5.2,1.3);
    }

        //1.我要干嘛?求长方形的周长
        //2.我干这件事情,需要什么才能完成? 长,宽
        public static void getlength(double len,double width){
        double result=(len+width)*2;
            System.out.println(result);
        }
}

在这里插入图片描述

4.人肉计算机2

在这里插入图片描述

public class MethodDemo4 {
    public static void main(String[] args) {
        //需求:定义一个方法,求圆的面积,将结果在方法中打印
        //目标:根据不同的需求,选择定义无参的方法,还是带参数的方法

        getArea(1.5);
    }

    //1.我要干嘛?求圆的面积
    //2.我干这件事情,需要什么才能完成?半径的平方
    public static void getArea(double radius){
        double result=radius*radius*3.14;
        System.out.println(result);
    }
}

在这里插入图片描述

四、带返回值方法的定义和调用

在这里插入图片描述

1.带返回值方法的定义和调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.人肉计算机

在这里插入图片描述

(1)三种调用方法的演示

public class MethodDemo5 {
    public static void main(String[] args) {
        //目标:掌握带返回值方法的定义和调用格式

        //1.直接调用---用于没有返回值的结果
        getSum(10,20,30);

        //2.赋值调用(最常用)
        double sum=getSum(10,20,30);
        System.out.println(sum);

        //3.输出调用
        System.out.println(getSum(10,20,30));

    }
        public static double getSum(double num1,double num2,double num3){
            double result=num1+num2+num3;
            return result;//返回方法的调用处

        }
}

1.直接调用的结果:空的
在这里插入图片描述
2.赋值调用的结果
在这里插入图片描述
3.输出调用的结果
在这里插入图片描述

(2)题目正解

public class MethodDemo5 {
    public static void main(String[] args) {
        //目标:掌握带返回值方法的定义和调用格式

        //1.直接调用---用于没有返回值的结果
       // getSum(10,20,30);

        //2.赋值调用
        //double sum=getSum(10,20,30);
        //System.out.println(sum);

        //3.输出调用
        //System.out.println(getSum(10,20,30));

        //先计算第一个季度的营业额
        double sum1=getSum(10,20,30);
        //先计算第二个季度的营业额
        double sum2=getSum(20,30,40);
        //先计算第三个季度的营业额
        double sum3=getSum(30,40,50);
        //先计算第四个季度的营业额
        double sum4=getSum(40,50,60);

        //求全年的营业额
        double sum=sum1+sum2+sum3+sum4;
        System.out.println(sum);

    }
        public static double getSum(double num1,double num2,double num3){
            double result=num1+num2+num3;
            return result;//返回方法的调用处

        }
}

在这里插入图片描述

3.总结

在这里插入图片描述
方法的返回值返回到调用处

4.练习:比较大小

在这里插入图片描述

public class MethodDemo6 {
    public static void main(String[] args) {
        //目标:要能区分出什么时候使用带返回值的方法
        //需求:定义方法,比较两个长方形的面积

        double area1=getArea(5.3,1.7);
        double area2=getArea(2.4,2.7);

        if(area1>area2){
            System.out.println("第一个长方形的面积更大");
        }else{
            System.out.println("第二个长方形的面积更大");
        }


    }

    //1.我要干嘛?比较两个长方形的面积
    //2.需要什么?两个长 两个宽
   /* public static void compare(double len1,double width1,double len2,double width2){
        double area1=len1*width1;
        double area2=len2*width2;

        if(area1>area2){
            System.out.println("第一个长方形的面积更大");
        }else{
            System.out.println("第二个长方形的面积更大");
        }

    */

    //在以后实际的开发中,我们一般是把重复的代码或者具有独立功能的代码抽取到方法中
    //以后直接调用就好了
    //如果不止两个长方形比较呢?

        //定义一个方法求长方形的面积
        //1.我要干嘛?比较两个长方形的面积
        //2.需要什么?两个长 两个宽
        //3.方法的调用处,是否需要继续使用方法的结果
        //如果要用,那么方法必须要有返回值
        //如果不要用,方法可以写返回值,也可以不写返回值
        public static double getArea(double len,double width){
            double area=len*width;
            return area;


        }

    }

在这里插入图片描述

五、方法的小结

1.方法的完整定义格式

在这里插入图片描述

2.方法的注意事项

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.return关键字

在这里插入图片描述

4.判断下面的代码书写是否正确

在这里插入图片描述
在这里插入图片描述

六、方法的重载

在这里插入图片描述
下面的代码是否构成重载?
答案:是.因为方法名相同,参数不同,上面有两个参数,下面有三个参数
在这里插入图片描述
在这里插入图片描述

1.区分一下方法是否构成重载

要在同一个类里面,方法名一样,形参不一样,不看返回值
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.会定义重载的方法

在这里插入图片描述

public class MethodDemo7 {
    public static void main(String[] args) {
        /*
        需求:使用方法重载的思想,设计比较两个整数是否相同的方法
         要求:兼容全整数类型(byte,short,int,long)
         */
        //调用
        //只要保证实参和形参一一对应就好了,调用的时候会调用相应的方法
       compare(5,3);
       compare((byte)5,(byte)3);
      /* byte b1=5;
       byte b2=3;
       compare(b1,b2);
       */


    }
    //会把相同功能的方法起成一样的名字
    //好处1:定义方法的时候可以不用那么多的单词了
    //好处2:调用方法的时候也不需要那么麻烦了
    public static void compare(byte b1,byte b2){
        System.out.println(b1==b2);
    }
    public static void compare(int i1,int i2){
        System.out.println(i1==i2);
    }
    public static void compare(short s1,short s2){
        System.out.println(s1==s2);
    }
    public static void compare(long l1,long l2){
        System.out.println(l1==l2);
    }
}

在这里插入图片描述

七、方法的基本内存原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、基本数据类型和引用数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
只要是new出来的,都是引用数据类型,例如数组
int[] arr=new arr{1,2,3};
在这里插入图片描述
As
在这里插入图片描述

小结

在这里插入图片描述

九、方法的值传递

1.基本数据类型的值的传递

猜猜下面代码的结果是什么呢?不要轻敌哦~

public class Test1 {
    public static void main(String[] args) {
        int number=100;
        System.out.println("调用方法前:"+number);
        change(number);
        System.out.println("调用方法后:"+number);
    }
    public static void change(int number){
        number=200;
    }
}

在这里插入图片描述
为什么会这样呢?接下来从内存的角度去分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(注意上图是将change中的number赋值为200,而原来number的值不变)
在这里插入图片描述

小结

传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值.
怎样修改代码将number的值改为200呢?
那么需要让方法具有返回值,并且在类中定义变量接收返回值.

public class Test1 {
    public static void main(String[] args) {
        int number=100;
        System.out.println("调用方法前:"+number);
        number=change(number);
        System.out.println("调用方法后:"+number);
    }
    public static int  change(int number){
        number=200;
        return number;
    }
}

在这里插入图片描述

2.引用数据类型的值的传递

猜猜这个结果吧~

public class Test2 {
    public static void main(String[] args) {
        int[]arr={10,20,30};
        System.out.println("调用change方法前:"+arr[1]);
        change(arr);
        System.out.println("调用change方法后:"+arr[1]);
    }
    public static void change(int[] arr){
        arr[1]=200;
    }
}

在这里插入图片描述
为什么会这样呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(注意上图是将arr地址值交给了change方法的形参)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值.
在这里插入图片描述


总结

今天的内容你是否有所收获呢友友们🥰如果有写的不对的地方,欢迎大家帮我指正.最后,希望友友们点赞收藏一下博客关注后续的Java学习内容哦~😘💕💕

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值