2.人肉计算机
(1)三种调用方法的演示
public class MethodDemo5 { public static void main(String[] args) { //目标:掌握带返回值方法的定义和调用格式 //1.直接调用---用于没有返回值的结果 getSum(10,20,30); //2.赋值调用(最常用) double sum=getSum(10,20,30); System.out.println(sum); //3.输出调用 System.out.println(getSum(10,20,30)); } public static double getSum(double num1,double num2,double num3){ double result=num1+num2+num3; return result;//返回方法的调用处 } }
1.直接调用的结果:空的
2.赋值调用的结果
3.输出调用的结果
(2)题目正解
public class MethodDemo5 { public static void main(String[] args) { //目标:掌握带返回值方法的定义和调用格式 //1.直接调用---用于没有返回值的结果 // getSum(10,20,30); //2.赋值调用 //double sum=getSum(10,20,30); //System.out.println(sum); //3.输出调用 //System.out.println(getSum(10,20,30)); //先计算第一个季度的营业额 double sum1=getSum(10,20,30); //先计算第二个季度的营业额 double sum2=getSum(20,30,40); //先计算第三个季度的营业额 double sum3=getSum(30,40,50); //先计算第四个季度的营业额 double sum4=getSum(40,50,60); //求全年的营业额 double sum=sum1+sum2+sum3+sum4; System.out.println(sum); } public static double getSum(double num1,double num2,double num3){ double result=num1+num2+num3; return result;//返回方法的调用处 } }
3.总结
方法的返回值返回到调用处
4.练习:比较大小
public class MethodDemo6 { public static void main(String[] args) { //目标:要能区分出什么时候使用带返回值的方法 //需求:定义方法,比较两个长方形的面积 double area1=getArea(5.3,1.7); double area2=getArea(2.4,2.7); if(area1>area2){ System.out.println("第一个长方形的面积更大"); }else{ System.out.println("第二个长方形的面积更大"); } } //1.我要干嘛?比较两个长方形的面积 //2.需要什么?两个长 两个宽 /* public static void compare(double len1,double width1,double len2,double width2){ double area1=len1*width1; double area2=len2*width2; if(area1>area2){ System.out.println("第一个长方形的面积更大"); }else{ System.out.println("第二个长方形的面积更大"); } */ //在以后实际的开发中,我们一般是把重复的代码或者具有独立功能的代码抽取到方法中 //以后直接调用就好了 //如果不止两个长方形比较呢? //定义一个方法求长方形的面积 //1.我要干嘛?比较两个长方形的面积 //2.需要什么?两个长 两个宽 //3.方法的调用处,是否需要继续使用方法的结果 //如果要用,那么方法必须要有返回值 //如果不要用,方法可以写返回值,也可以不写返回值 public static double getArea(double len,double width){ double area=len*width; return area; } }
五、方法的小结
1.方法的完整定义格式
2.方法的注意事项
3.return关键字
4.判断下面的代码书写是否正确
六、方法的重载
下面的代码是否构成重载?
答案:是.因为方法名相同,参数不同,上面有两个参数,下面有三个参数
1.区分一下方法是否构成重载
要在同一个类里面,方法名一样,形参不一样,不看返回值
2.会定义重载的方法
public class MethodDemo7 { public static void main(String[] args) { /* 需求:使用方法重载的思想,设计比较两个整数是否相同的方法 要求:兼容全整数类型(byte,short,int,long) */ //调用 //只要保证实参和形参一一对应就好了,调用的时候会调用相应的方法 compare(5,3); compare((byte)5,(byte)3); /* byte b1=5; byte b2=3; compare(b1,b2); */ } //会把相同功能的方法起成一样的名字 //好处1:定义方法的时候可以不用那么多的单词了 //好处2:调用方法的时候也不需要那么麻烦了 public static void compare(byte b1,byte b2){ System.out.println(b1==b2); } public static void compare(int i1,int i2){ System.out.println(i1==i2); } public static void compare(short s1,short s2){ System.out.println(s1==s2); } public static void compare(long l1,long l2){ System.out.println(l1==l2); } }
七、方法的基本内存原理
八、基本数据类型和引用数据类型
只要是new出来的,都是引用数据类型,例如数组
int[] arr=new arr{1,2,3};
小结
九、方法的值传递
1.基本数据类型的值的传递
猜猜下面代码的结果是什么呢?不要轻敌哦~
public class Test1 { public static void main(String[] args) { int number=100; System.out.println("调用方法前:"+number); change(number); System.out.println("调用方法后:"+number); } public static void change(int number){ number=200; } }
为什么会这样呢?接下来从内存的角度去分析
(注意上图是将change中的number赋值为200,而原来number的值不变)
小结
传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值.
怎样修改代码将number的值改为200呢?
那么需要让方法具有返回值,并且在类中定义变量接收返回值.
public class Test1 { public static void main(String[] args) { int number=100; System.out.println("调用方法前:"+number); number=change(number); System.out.println("调用方法后:"+number); } public static int change(int number){ number=200; return number; } }
2.引用数据类型的值的传递
猜猜这个结果吧~
public class Test2 { public static void main(String[] args) { int[]arr={10,20,30}; System.out.println("调用change方法前:"+arr[1]); change(arr); System.out.println("调用change方法后:"+arr[1]); } public static void change(int[] arr){ arr[1]=200; } }
为什么会这样呢?
(注意上图是将arr地址值交给了change方法的形参)
小结
传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值.
总结
今天的内容你是否有所收获呢友友们🥰如果有写的不对的地方,欢迎大家帮我指正.最后,希望友友们点赞收藏一下博客关注后续的Java学习内容哦~😘💕💕