方法

方法:

为什么要有方法?
方法可以用于定义可重用的代码以及组织和简化编码。
方法是什么?
方法是一段代码。
方法的作用:
1、解决程序主函数中重复且具有独立功能代码块多次出现导致的主函数冗余问题。是主函数看起来简洁。
2、使程序模块化
3、方法就像一个加工厂,将得到的数据进行加工得到新的数据
注意:在其他某些语言中,方法称为过程(procedure) 或函数(fimction)。带返回值的方 法称为函数,返回值类型为 void的方法称为过程。 方法也被叫做函数。

定义一个方法

方法的构造:
访问权限 函数类型 返回值类型 函数名(参数列表){
函数体;
return 返回值;
}

访问权限

函数的使用范围
包括public(公共的) protected(受保护的) private(私有的) 默认的(即不写) 四种

方法类型

static 静态函数
默认 (不写)成员函数
abstrect 抽象函数
native 本地函数
synchronized 同步函数

返回值类型

byte short long int double float char String boolean等
除此之外void表示无返回值类型

方法名

程序员给函数自定义的名称(标识符)

参数列表

参数列表由若干个 参数类型和参数名组成 主要用于接收外界的数据
注意:定义方法时参数列表是形参可以理解为,只有变量空间,但是变量空间中没有存地址;调用方法时参数传的是实参,可以理解为给变量空间中存入地址。

方法体

主要用于加工参数列表中的参数

返回值

返回经过方法加工后的新参数

局部变量

在方法中创建的变量都是局部变量;当方法调用完之后就被删除;需要重新调用方法时,计算机创建临时存储区,在临时存储区中创建变量空间,当方法调用完之后变量再次被删除。

方法栈

方法的运行是基于栈内存的

一个先进后出的容器
你可以将栈想象为一个瓶子,给里面放入若干小球;当需要将小球取出时,先进去的小球后出来,后进去的小球先出来

入栈:
在这里插入图片描述
出栈:
在这里插入图片描述

现在我们针对一段函数具体分析。

import java.util.Scanner;
class Method{
   //计算用户输入的数的平方
    public static void main(String[] args){
   //主函数
        System.out.print("请输入一个数:");//提示用户输入一个数
        Scanner scanner=new Scanner(System.in);//定义一个Scanner对象
        int number=scanner.nextInt();//从键盘获得,将数的常量池地址放入变量number中
        int lastNumber=sqrt(number);//调用sqrt函数计算number的平方,将其常量池地址传入变量lastNumber中
        System.out.println(number+" 的平方是 "+getNumber);//输出
    }
    public static int sqrt(int number){
   //方法sqrt的定义
        int a=number*number;;//定义局部变量a 计算参数的平方将得到的值的地址放入a中
        return a;//返回a中的常量池地址
    }
}
public static void main(String[] args){
   //主函数

在这里插入图片描述

int number=scanner.nextInt();//从键盘获得,将数的常量池地址放入变量number中  
//假定输入了一个int 3

在这里插入图片描述

 int lastNumber=sqrt(number);//调用sqrt函数计算number的平方,将其常量池地址传入变量

在这里插入图片描述
这个语句结束后
sqrt函数出栈,并且所占的内存被清理
在这里插入图片描述

        System.out.println(number+" 的平方是 "+getNumber);//输出
    }//这个括号后主函数执行完毕,住函数出栈

在这里插入图片描述

不使用方法的弊端

1、 如果不使用方法那么所有代码都在主函数中,从而导致主函数的代码过多 。主函数在进栈的时候 会占用大部分的内存
2、程序的可读性差(逻辑不清晰)
3、对于程序的维护成本太高(牵一发而动全身)

方法设计流程

自顶向下的设计流程,首先确定大体框架,然后再处理细节

方法的重载

方法的重载指的是同一个类中出现的同名方法,参数列表不同。
注意: 与返回值类型,参数名都无关,制语参数类型的排列顺序有关。

重载的好处

我们可以扩展函数的功能,虽然函数名相同但是参数类型不同,执行的内容也不同

重载注意事项

class Test01{
   
    public static void main(String[] args){
   
        int a=3;
        int b=4;
        System.out.println(add(a,b));
        double d=3.14;
        double e=5.44;
        System.out.println(add(d,e));
        System.out.println(add(3,3.14));
        System.out.println(add(3.13,9));
    }
    //对两个小数进行加法运算
    public static double add(double c,double d){
   
         return c+d;
     }
    public static String add(String a,String b){
   
        System.out.println("String+String");
        return a+b;
    }
     public static double add(int a,double b){
   
         System.out.println("int+double");
         return a+b;
     }
     public static double add(double a,int b){
   
         System.out.println("double+int");
         return a+b;
     }
    public static double add(double a,double b){
   
      System.out.println("double+double");
      return a+b;
    }
    //对两个整数进行加法运算
     public static int add(int a,int b){
   
         System.out.println("int+int");
         return a+b;
     }
}

运行结果

int+int
7
double+double
8.58
int+double
6.140000000000001
double+int
12.129999999999999

当没有add(int+int)时

class ProblemFive{
   
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值