Notes and Insights 6
方法
method : 是程序中最小的执行单元
main方法: 主方法
为解决代码重复(具有独立功能的代码) 太麻烦的问题
我们使用代码打包 调用方法
- 提高代码的复用性
- 提高代码的可维护性
定义方法 调用method
格式:
最简单的方法定义与调用
public static void 方法名 () {
方法体(打包起来的代码)
}
方法名();
方法必须先定义后调用
程序执行看到方法则进入方法, 执行完毕回到调用处
带参数的方法
public static void method(int num1, int num2) {
int result = num1 + num2;
System.out.println(result);
}
注意:方法调用时,参数的数量和类型必须与方法定义中的小括号里面的变量一一对应,否则程序会报错(形参与实参必须一一对应)
形参 与 实参
形式参数 实际参数
方法体 中的 是形参
带返回值(方法运行的最终结果)的方法
方法的调用者
在调用处要根据方法的结果去编写另外一段代码
方法的返回值会返回给调用处
- 直接调用: 方法名(实参); 一般不用
- 赋值调用: 整数类型 变量名 = 方法名 (实参);
- 输出调用: System.out.println(方法名(实参));
综上:
public static 返回值类型 方法名 (参数){
方法体;
return 返回值;
}
方法与方法之间是平级关系,且不能互相嵌套定义(但是可以嵌套使用)
return 结束方法 并 返回结果
return语句下面的代码属于无效代码
return 关键字
方法的重载
- 在同一个类中,定义了多个同名的方法,这些同名的方法具有同种的功能
- 每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系
- 1同一个类中,方法名相同,2参数不同的方法。3与返回值无关(int void …)
参数不同: 个数不同、类型不同、顺序不同(顺序不同可以构成重载,但是不建议)
虚拟机通过参数的不同来区分同名的方法
形参 与 实参 要 一一对应
方法的内存
- 方法调用的基本内存原理
- 方法传递基本数据类型的内存原理
- 方法传递引用数据类型的内存原理
方法内存分配
进栈内存运行 执行完毕出栈
可以嵌套调用方法 不可嵌套定义
先进后出 压子弹
代码运行
加载
堆(new)
基本数据类型:整 浮 布 字符 (存储在自己的空间中)
引用数据类型:只要是new出来的 数组 int[] arr = new int[] {…}
记录的不是真实的数据,而是其他内存空间的数据地址值
地址 元素
// 传递基本参数类型时,传递的是真实的数据,形参的改变,不影响实际参数的值
// 传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值
Java中的方法可以传递参数,参数传递的方法就是值传递。
实参:调用方法时,传递的参数叫实参。调用方法时,会把实参传递给形参,方法内部实际上使用形参。
形参:定义方法时,写的参数叫形参。
值传递:当参数是基本类型时,传递参数的值,传递 i=666 ,会把666这个值赋值给形参。
当参数是对象时,传递的是对象的地址值,就是把对象的地址值赋值给形参。
- 基本类型作为参数传递
在Java中基本数据类型遵循值传递,所以在 在调用方法时, 只是将原数据的副本传给方法中的形参
因此当使用基本数据类型作为方法的形参时,在方法体内对形参的改变不会影响到实参的值。
- 引用类型作为参数传递
引用类型的参数传递,属于引用传递,传递的是地址值,形参的改变会影响实参。
但String类例外,String字符串比较特殊,也属于引用传递,但是他作为参数传递,是值传递。
基本数据类型和引用数据类型作为参数的区别:
1.基本数据类型的变量中直接存放数据本身,所以改的时候改的是数据本身。
2.但是引用类型不同的地方在于真正的数据并没有栈区的变量中保存,而是在堆区里面保存,虽然也复制了一份,也是副本,二者指向的是同一块内存空间。
3.引用数据类型就比如说:两个同学使用的是同一份复习资料,其中一人把资料撕毁了,另一个当然也会受到影响。而基本数据类型就是复制了一份,其中一人把资料撕毁了,并不影响另一个人。
————————————————
参考博客 : https://blog.csdn.net/weixin_45447369/article/details/105885572