1.带返回值的额定义和调用
1.1格式
public static 返回值类型 方法名(参数){
方法体;
return 返回值;
}
1.2范列
public static int getSun(int a,int b){
int c=a+b;
return c;
}
1.3方法定义时把void改成想调用的类型,用return返回对应的值就可以返回保存继续供后面调用用,而system.out.print();是直接输出到显示台。并不会返回保存
1.4.1什么时候用到返回值的方法
在调用处要根据方法的结果,去编码另外一段代码,即要再次用到运行结果时要把结果返回保存
1. 4.2有返回值的定义格式:
pubic static 返回值类型 方法名(参数){
方法体:
return返回值;
}
1.4.3返回值方法的调用格式
直接调用,赋值调用,输出调用
返回值方法中参数运行的过程
1.4.4待返回值方法的调用
直接调用:
方法名(实参);//在main方法会匹配调用与改参数相同的方法
赋值调用:
整数类型 变量名=方法名(实参);
输出调用:
system.out.println(方法名(实参));
1.4.5带返回值方法的定义和调用
方法的返回值其实就是方法运行的最终结果。
如果在调用处要根据方法的结果,去编写另外一段逻辑代码
为了在调用处拿到方法产生的结果,就需要定义带返回值的方法
1.4.6方法没有返回值用void,有返回值那一定要写返回值类型
2.方法的注意事项
2.1方法不调用就不执行,方法之间是平行关系不能相互嵌套定义,如下为错误示范:
public class MethodDemol{
public static void main(String[] arg){
public static void playgame(){
System.out.print("玩游戏")
}
}
}
本列中play game被嵌套到main函数中两者没有并行是错误的。方法之间是平行的
2.2方法执行顺序与编写顺序无关,只与在主函数中的调用顺序有关,函数执行是从main函数开始执行的,满函数的的语句按自上而下执行,当语句调用到某函数时进入该函数执行完后返回该语句位置顺序向下执行,
2.2.1方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写,如果不省略,后面不能跟具体的数据。再者return后面不在编写语句因为不会再被执行表示已经结束
如:
public class MethodDemol{
public static void playGame(){
System.out.println("玩王者农药");
return;//方法结束此处虽有return但是无具体数据只表示函数结束,与上面方法的void对应得上
//无论return后面跟数据否都不能在加语句,因为return表示结束不会在接续执行后面的语句
} }
2.3方法没有返回值可以胜利不写return,如果书写表示语句结束,同时方法有返回值:必须要写return表示结束方法和返回结果。
如:
public class MethodDemo{
public static void method(){//此处未写返回值类型应对应无返回值的情况;
//代码片段
return 100;//此处有return且后面加了具体数据,则方法名前的返回之类行一定要为该返回值的类型
}}
又列return后面跟语句无效:
public class MethoeDemo{
public static void method(){
//代码片段
return;//对应无返回值类型void二者已匹配;表示执行结束
System.out.println("卑微函数");//之前已执行return语句故该处不会在执行
}}
3方法重载
方法重载的练习:
需求:
定义一个方法求量个整数的和
定义一个方法求三个整数的和
定义一个方法求四个整数的和
定义一个方法求两个小数的和
列:
publid class MethodDemo{
//两个整数的求和方法
public static int sum(int a,int b){
return a+b;
}
//求三个整数之和方法
public static int su吗(int a,int b,int c){
reeturn a+b+c;}
//求四个整数的和
public static int sum(int a,int b,int c,int d){
return a+b+c+d;
}
//求两个小数之和方法
public static double sum(double a,double b){
return a+b;
}
}
3.1方法重载
在同一个类中,定义了多个同名的方法,这些同名的方法具有相同的功能,
每个方法具有不同的参数类型或参数个数,这些同名的方法,构成了重载关系
简单记:同一个类中,方法名相同,参数不同的方法。与返回值无关即public后面那个类型
参数不同:个数不同,类型不同,顺序不同
如函数小调用:
sum(10,20);
sum(10,20,30);
调用以下:
public class MethodDemo{
public static int sum(int a,int b){
return a+b;
}
public static int sum(int a,int b,int c){
return a+b+c;
}
}
java虚拟机会通过参数的不同来区分同名的方法两个sum分别调用methodDemo类中的两个方法,会调用与身参数形式相同的方法。
非重载示例:
3.1.1方法名同名且参数相同(但返回值不同)不构成重载
public class MethodDemo{
public static void fn(int a){
//方法体
}
public static int fn(int a){
//方法体
}}
3.1.2方法名同名但是不在同一类中不构成重载
public class MethodDemo01{
public static int fn(int a){
//方法体}
}
public class MethodDem02{
public static int fn(double a){
//方法体
}}
3.12正确的重载示例:
方法名同参数类型数量不同(返回值同与不同不影响)
public class MethodDemo{
public static float fn(int a){
//方法体
}
public static int fn(int a,int b){
//方法体
}
}
再有:方法名同但是参数类型不同(返回值同与不同不影响)
public class MethodDemo{
public static void fn(int a){
//方法体}
public static int fn(double a){
//方法体
}
}
3.1.3
方法名同参数类型同但参数类型相同:返回值相同不够构成重载但是不建议
public class MethodDemo{
public static void fn(int a,double b){
//方法体
}
public static coid fn(double a,int b){
//方法体
}
}
3.1.4重载的好处:
//会把相同功能的方法名起成一样的名字
//好处一:定义方法的时候可以不用那那多单词,换来换去的定义方法名
.//好处二:调用方法的时候也不需要那么麻烦了
如调用:compare(10,20);//会对应匹配到参数类型相同的方法
public static void compare(byte b1 ,byte b2){
System.out.println("byte");
System.out.println(b1==b2);
}
public static void compare(short s1 ,short s2){
System.out.println("short");
System.out.println(s1==s2);
}
public static void compare(int i1 ,int i2){//在编译时比一般的灰色代码显黑,就是调用方法匹配的对应方法
System.out.println(i1==i2);
}
public static void compare(long n1,long n2){
System.put.println(n1==n1);
}
//
4.方法的一些列题
5.基本数据类型
引用数据类型是存储了其他空间的地址然后引用其他空间的数据
将arr赋值给arr2相当于将arr1 指向的数组的地址赋值给arr2
内存中的使用范围分析
引用数据变量形参的改变会影响实际参数的值