关于Java中方法的一些知识点

关于Java中方法的一些知识点

(此篇文章也算是本人在学习Java方法时记录的笔记)

方法的本质:

方法就是一段代码片段,并且这段代码片段可以实现某个特定的功能,并且可以被重复地利用。

方法的定义:

  • 方法定义在类体当中,在一个类当中可以定义多个方法,方法的编写位置没有先后顺序,可以随意。但是方法体当中不能再定义方法。
  • 方法体由Java语句构成,方法体中的代码遵守自上而下的顺序依次进行。
  • 方法定义的语法结构:
    【修饰符列表】 返回值类型 方法名 (形式参数列表){
    方法体;
    }
    例如实现a+b的方法:
    public static int sum(int a,int b){
        return a+b;
    }
    

方法的调用:

方法的修饰符列表中有static关键字时,调用方法的格式为:

  • 类名. 方法名(实际参数列表);
    注:如果调用的方法和本身在同一个类当中的话,那么类名可以省略不写,直接写作:方法名. (实际参数列表);
    例如以下代码调用方法:
import java.util.Scanner;

public class fangfa {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int a=input.nextInt();
        int b=input.nextInt();
        int sum = sum(a,b);
        System.out.println(sum);
    }
    public static int sum(int a,int b){
        return a+b;
    }
}

  • 方法的调用不一定要在main方法中调用,也可以在方法中调用其他的方法,实现方法的嵌套。

方法的返回值:

  • 返回值的定义:
    一个方法是可以完成某一个特定功能的,这个方法执行结束后,大多数需要返回最终的执行结果,执行结果可能是一个具体存在的数据,这个具体存在的数据就是返回值。
  • 返回值的类型:
    Java中任意一种类型都可以,包括基本数据类型和所有引用的数据类型,比如说:byte、int、double、long、String、Char……
  • 当遇到方法执行结束后不要返回任何数据时,则方法的返回值类型必须填写void关键字。当然在方法体中也不能编写“ return 值;” 这样的语句,但是可以编写“ return;”这样的语句。
  • 当方法执行完return语句后,当前方法就结束了。

方法名定义:

  • 只要是合法的标识符就行了;
  • 方法名最好见名知意;
  • 方法名最好是动词;
  • 方法名的首字母要求小写,后面的每个单词首字母要求大写,符合驼峰命名原则;

方法执行内存分析:

  • 方法只定义不调用,是不会执行的,并且在JVM中也不会给该方法分配“运行所属”的内存空间。只有在调用这个方法的时候,才会动态地给这个方法分配所属的内存空间。
  • 在JVM内存划分上有三块主要的内存区域:
    • 方法区内存
    • 堆内存
    • 栈内存
      1. 栈针永远指向栈顶元素
      2. 栈顶元素属于活跃元素,其他元素静止
      3. 术语:
        压栈/弹栈/push
        弹栈/出栈/pop
      4. 栈数据结构储存数据的特点是:
        先进后出
        后进先出
        具体如图所示:
        在这里插入图片描述
  • 方法代码片段属于. class字节码文件中的一部分,字节码文件在类加载的时候,将其放在了方法区当中。所以JVM中的三块主要内存空间中方法区内存最先由数据,存放代码片段。
  • 代码片段虽然在方法区内存中只有一份,但可以被重复调用,每一次在调用这个方法的时候,需要给该方法分配独立的活动场所,在栈内存中分配。【栈内存中分配方法运行的所属内存空间】
  • 方法在调用的瞬间,会给该方法分配内存空间,会在栈中发生压栈动作;方法执行结束后,会将该方法的内存空间全部释放,此时发生弹栈动作。
    • 压栈:给方法分配内存;
    • 弹栈:释放该方法的内存空间;
  • 局部变量在“方法体”中声明。局部变量在运行阶段内存在栈中分配。

方法的重载:

  • 方法的重载又被称为:overload
  • 多个方法的功能相似的时候,可以考虑使用方法的重载,尽可能让方法名相同。
  • 以下条件满足后构成了方法的重载:
    1. 在同一个类当中;
    2. 方法名相同;
    3. 参数列表不同:
    - 数量不同
    - 顺序不同
    - 类型不同
  • 方法的重载和其他部分的关系:
    1. 方法的重载和方法名+参数列表没有关系
    2. 方法的重载和返回值的类型无关
    3. 方法的重载和修饰符列表无关

方法的递归:

  • 方法递归的定义:方法自身调用自身
  • 方法的递归是很耗费栈内存的,递归算法可以不用的时候尽量不用。
  • 递归必须要有结束条件,没有结束条件一定会发生栈内存溢出错误。
  • 递归即使有结束条件,并且结束条件是正确的,也可能会发生栈内存溢出错误。因为递归的太深了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值