(参数列表)可以定义参数,也可以不定义参数,也可以定义多个参数
分析:在方法的定义或者实现过程中,是否存在未知的,不确定的,可能会改变的数据,如果存在定义在方法的参数列表上
参数列表:数据类型 参数名1,数据类型 参数名2-->相当于变量的声明
数据类型可以为任意数据类型
{} :方法体语句,实现功能的代码段;
return :
1)提前结束方法
2)带出返回值 return返回值;
在一个有返回值类型的方法必须存在return关键字
调用:
执行方法中的代码
普通调用:方法名(参数列表);
有返回值的方法调用的时候需要接收返回值:
1)赋值调用:数据类型 变量名=方法名(参数列表);
//public static int S(int a,int b){
return a*b;
}
2)输出调用:System.out.println(方法名(参数列表));
//System.out.println(S(5,6));
return 与兼容类型
return 返回:
1)提前结束方法
2)在有返回值类型的方法中,return带出返回值(就是你这串代码要表达的东西,例如:上面的return a*b 中的a*b及时返回值,就是要用的)
返回给方法得到调用
在有返回值的地方必须存在return(不然一来发红报错,二来白写了没有返回)
不可达语句:没有执行时机
1)能够执行到return后面的代码
//直接报错,且sout无法打出该有的快捷方式,该句子的存在就是错误
2)while--true for(;;){}死循环后面的代码
//没有终止的,只会无限循环,且缺少条件表达式的for(;;)也只是能看看而已
3)continue后面
4)break后面
//3-4后面接东西,句子的语法就出问题了
5)while-->false
兼容类型:
参数:形参的类型>=实参的类型
返回值:接收返回值的变量类型>=方法的返回值类型>=return后面的数据类型
栈:方法在运行期间所存在的位置
堆:堆中存放数据,数组部分
代码编辑
1)代码运行时加载到方法中(main()方法,其他方法)
2)找到main方法由虚拟机jvm调用main压栈执行,要为main在栈中开辟个栈帧
3)执行main方法中的内容
4)调用其他方法,压栈执行,为数据开辟空间
5)逐行执行方法中的代码
6)方法的返回值返回方法的调用处(main)
7)其他方法执行完毕,从栈中离开,释放内存(弹栈)
8)回到main中执行其他语句,打印其他的语句
9)main执行完毕,马上弹栈,释放内存
栈中数据特殊的地方:
1)有序的,先进的后出,后进的先出
2)在栈中执行完毕,马上弹出离开不占用内存
注意:在同一个栈中不能使用两个相同的变量名:因为作用域不同