java自学之路-day05
JAVA05
方法概述
main方法
方法定义格式
- 修饰符 返回值类型 方法的名字 (参数列表){
方法的功能主体
return;
}
- 修饰符:目前理解为固定写法 public static,后面面向对象会进行详细讲解
- 返回值类型:方法运算后,结果的数据类型
- 方法名:自定义名字,满足标识符规范,方法名首字母小写,后面每个字母每个首字母大写
- 参数列表:方法运算中,如果有未知的数据,定义在参数列表上
- return:方法的返回,将计算的结果返回
- 定义过程:
- 明确方法的运行后的结果的数据类型 定义格式对应的就是返回值类型
- 方法计算过程中有没有未知的数据,并确定他的返回值类型,多个用逗号隔开
- 定义在类中方法外
- 按照1中的格式定义
- 调用方法
方法名(参数);
- 获取方法的返回值
定义一个和返回值类型相同的变量,将方法的返回值赋给这个变量
方法调用过程分析
- 从main入口。开始执行程序
- 从main的代码开始执行程序
- 调用方法并传递相应的实际参数
- 方法形式参数接受传递过来的实际参数
- 方法定义没有位置概念,没有顺序,可以与其他方法一起随意摆放
方法调用的内存分析
- 方法栈和方法区数据共享区
- 编译后的.class文件先进入方法区
- .class文件包括一个主方法main和一个自定义方法
- 然后Jvm虚拟机调用main
- Main方法进入方法栈运行
- 调用自定义方法传递参数
- 自定义方法进栈运行
- 计算机结果返回调用者
- 然后自定义方法出栈,释放内存资源
- Main方法获得方法结果
- Main出栈释放内存
- 整个过程结束
- 无返回值无参数
练习
打印一个正方形
- 有返回值无参数
键盘输入一个数返回打印
- 无返回值有参数
输出指定n行m列的矩形
- 有返回值有参数
求三个平均数
方法定义注意事项
- 方法不能定义在另一个方法里面
- 主要不要写错调用的方法名
- 没有写或者写错传递参数
- 返回值是void 即没有返回值方法可以不写return,也可以写return;
- 方法返回值和人return后面的数据类型必须匹配
- 方法不能重复定义
- 没有返回值时不能直接打印
- 定义方法没规定几个参数和数据类型可以写多个名字相同但参数类型和参数个数必须不一样的方法,以满足多方面功能需求
- 例子:求不同数据类型的数据求和
- 例子:print方法。可以打印多种类型的数据 经典重载案例
- 参数类型或者个数必须不同
- 重载和参数变量名无关
- 重载和返回值类型无关
- 重载和修饰符无关
- 重载只和方法名和参数列表有关
方法的重载
注意事项
参数传递问题
l 方法参数是基本类型
- .class进入方法区
- main方法进入方法栈
- 执行main方法
分别执行 创建变量 赋值 调用自定义方法
- 自定义方法运行进入任务栈
- 自定义方运行 赋值a b
- 自定义方法出栈 没有改变a和b的值
- 执行main方法打印方法 a和b还是1和2(只有当自定义方法有返回值,且返回后又进行重新赋值才会改变)
- main出栈
- 结束
l 方法参数是引用类型
- .class文件进入方法区
- main方法进栈 执行:
int []arr={1,2,3,4}; 在堆内存中分配空间 arr指向这个数组的首地址
sop(arr[2]);
change(arr); 传递一个地址
sop(arr[2]);
- 执行自定义方法根据地址改变唯一数组元素所以结果就改变了