JAVA学习笔记四.方法

定义方法

方法的定义由方法名称、参数、返回值类型及方法体组成。

方法头指方法的修饰符、返回值类型、方法名和方法的参数。方法可以返回一个值,也可以不返回值。

定义在方法头中的变量称为形式参数,当调用方法的时候,就给参数传递一个值,这个值称为实际参数。方法名和参数列表一起构成方法签名,参数是可选的。

  • 定义:指被定义的条目是什么
  • 声明:为被声明的条目分配内存来存储数据

调用方法

方法的调用是执行方法中的代码。

main方法是由Java虚拟机调用的,方法头永远都是一样的。包括修饰符 public 和 static,String[]类型的参数。

每当调用一个方法时,系统会创建一个活动记录,用于保存方法中的参数和变量。活动记录置于一个内存区域中,称为调用堆栈。

当一个方法调用另一个方法时,调用者的活动记录保持不动,一个新的活动记录被创建用于被调用的新方法,一个方法结束返回到调用者时,其相应的活动记录也被释放。

void方法不需要return语句,但可以用于终止方法并返回到方法的调用者。

通过传值进行参数传递

调用的方法的时候是通过传值的方式将实参传给形参的。调用方法时,必须达到参数顺序匹配。实参必须与方法签名中定义的参数在次序和数量上匹配,在类型上兼容,在类型上兼容指不需要经过显式的类型转换。

在调用带参数的方法时,实参的值传递给形参,这个过程称为按值传递。

❗️一个需要注意的例子

public static void swap(int n1,int n2){
    System.out.println("\tInside the swap method");
    System.out.println("\t\tBefore swapping, n1 is "+n1+" n2 is "+n2);
    int temp = n1;
    n1 = n2;
    n2 = temp;
    System.out.println("\t\tAfter swapping, n1 is "+n1+" n2 is "+n2);
}

假设传入实参参数为 num1 和 num2。

最后的结果如下,可以看到实参的值没有被改变。

 原因是n1和n2有自己独立于num1和num2的存储空间。所以n1和n2的改变不影响num1和num2的内容。形参是方法中具有自己存储空间的变量,局部变量是在调用方法时分配的,当方法返回到调用者的时候就消失了。

那么如何完成两个数的交换呢?首先需要明白JAVA中有两种数据类型,一种是基本数据类型,一种是引用数据,而JAVA中的参数传递机制是值传递,具体如下:

  • 形参是基本数据类型的,将实参的传递给形参的基本数据类型的变量
  • 形参是引用数据类型的,将实参的引用类型变量的值(对象的首地址)传递给形参

基本数据类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。

引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

Java数据类型在内存中的存储:

  • 基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;
  • 引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值的存储在内存堆上的

重载方法

方法重载是指在一个类中有两个方法,它们具有相同的名字,但有不同的参数列表。编译器根据方法签名决定使用哪个方法。不能基于不同修饰符或返回值类型来重载方法。

变量的作用域

在方法中定义的变量是局部变量,局部变量必须在使用之前进行声明和赋值。不能在嵌套块中或同一块中两次声明同一个局部变量。

方法抽象和逐步求精

方法抽象是通过将方法的使用和它的实现分离来实现的。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值