Java学习笔记(方法)

  • 在java语言中有这样一种机制:*
  • 某个功能只需要写一遍;
  • 要是有这个功能,只需要给这个功能传递具体的数据
  • 这个功能完成之后返回一个最终的结果
    这样代码就可以重复利用了,提高代码复用性。【这就是“方法”】
    使用这个方法我们称为“调用”。

方法的本质是什么?

  • 方法就是一段代码片段,并且这段代码可以完成某个特定的功能,并且可以被重复使用。

方法定义在类体当中,在一个类当中可以定义多个方法,方法编写的位置没有先后顺序,可以随意。
方法体当中不能再定义方法!!!!!
方法体有java语句构成,方法体当中的代码遵守自上而下的顺序依次执行。

关于Java语言中的方法

  1. 方法怎么定义,语法结构
    [修饰符列表] 返回值类型 方法名(形式参数列表){
    方法体;
    }

  2. 对以上的语法结构进行解释说明:
    2.1关于修饰符列表:
    *现在统一写成public static
    *方法的修饰符列表当中有“static”关键字的话,怎么调用?
    -类名.方法名(实际参数列表)
    2.2返回值类型
    * 什么是返回值?
    一个方法是可以完成某个特定功能的,这个功能结束之后大多数都是需要返回最终结果的,执行结果可能是一个具体存在的数据。而这个具体存在的数据就是返回值
    * 返回值类型?
    返回值是一个具体存在的数据,数据都是有类型的,此处需要指定的是返回值的具体类型。
    * 返回值类型都可以指定哪些类型呢?
    Java任意一种类型都可以,包括基本数据类型和所有的引用数据类型。
    * 也可能这个方法执行结束之后不返回任何数据,java中规定,当一个方法执行结束之后不返回任何数据时,返回值类型位置必须编写:void关键字。
    * 返回值类型可以是:
    byte,short,int,long,float,double,boolean,char,string,void…
    * 返回值类型若不是void,表示这个方法执行结束之后必须返回一个具体数值。当方法执行结束的时候没有返回任何数据的话编译器会报错。返回的代码:“return 值 ;”,并且要求“值”的数据类型必须和“方法的返回值类型”一致。
    * 返回值是void的时候,在方法体当中不能编写“return 值;”这样的语句。但是可以编写“return;”这样的语句。
    * 只要带有return关键字的语句执行,return语句所在的方法结束。

    2.3 方法名:
    *只要是合法的标识符就行
    *方法名最好是见名知意
    *方法名最好是动词
    *方法名首字母要求小写,后面的每个单词首字母大写

    2.4形式参数列表
    *形参是局部变量 :int a;double b;
    *形参的个数可以是0~N个
    *多个形参之间用逗号隔开;
    *形参中起决定性作用的是形参的数据类型,形参的名字就是局部变量的名字。
    *方法在调用的时候,实际给这个方法传递到真实数据被称为:实际参数
    *实参列表和形参列表必须满足:
    数量相同、类型对应相同
    例如:
    public static int sum(int a,int b){
    }

    2.5 方法体必须由大括号括起来,方法体当中的代码有顺序,遵循自上而下的顺序依次执行,心切方法体由java语句执行,每一个java语句以;结尾。

  3. 方法怎么调用?
    方法只定义不去调用是不会执行的,只在调用的时候才会执行。
    语法规则:《方法的修饰符列表中有static》
    类名.方法名(实参列表)

方法的调用不一定在main方法中,可以在其他方法当中,只要是程序可以执行到的位置,都可以去调用其他方法。

方法调用的时候实参和形参要求个数对应相同,数据类型相同,类型不同的时候要求能够进行相应的自动类型转换。

方法调用

  1. 方法的修饰符列表当中有static关键字,完整的调用方法是:类名.方法名(实参列表);
  2. 但是,有的时候“类名.”可以省略。在同一个类当中的时候可以省略不写。
  3. 建议在一个java源文件中只定义一个class。

方法的返回值不是void的时候:

  1. 返回值类型必须保证百分百的执行“return 值;”这样的语句来完成值的返回。没有这个语句会报错
  2. 一个方法有返回值的时候,当我们调用这个方法的时候,方法返回了一个值,这个返回值可以选择接收,也可以不接收。

深入return语句

  1. 带有return关键字的java语句只要执行,所在的方法执行结束
  2. 在“同一个作用域”当中,return语句下面不能编写任何代码。

在返回值类型是void的方法当中使用“return;”语句。
“return;”语句出现在返回值为void的方法当中主要是为了用来结束当前方法。

方法在执行过程当中,在JVM中的内存是如何分配的,内存是如何变化的

  1. 方法只定义,不调用,是不会执行的,并且在JVM中也不会给该方法分配“运行所属”的内存空间。至于在调用这个方法的时候,才会动态的给这个方法分配所属的内存空间。

  2. 在JVM内存划分上有这样三块主要的内存空间:(还有其他)
    * 方法区内存
    * 堆内存
    * 栈内存

  3. 关于“栈”数据结构:

    • 栈:stack,是一种数据结构
    • 数据结构反应的是数据的存储形态
    • 常见的数据结构:数组、队列、栈、链表、二叉树、哈希表…
  4. 方法代码片段存在哪里?方法执行的时候执行过程的内存在哪里分配?

    • 方法代码片段属于.class字节码文件的一部分,字节码文件在类加载的时候放到了方法区中,所以方法区内存中最先有数据。

    在这里插入图片描述

  5. 方法在调用的的瞬间,会给该方法分配独立的内存空间,会在栈中发生压栈动作,方法执行结束之后,给该方法分配的内存空间全部释放,此时发生弹栈动作。

  6. 局部变量在“方法体”中声明,局部变量运行阶段内存在栈中分配。

关于栈元素

  1. 栈帧永远指向栈顶元素
  2. 栈顶元素处于活跃状态,其他元素静止
  3. 术语:
    压栈/入栈/push
    弹栈/出栈/pop
  4. 栈数据结构存储的特点是:先进后出,后进先出
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值