文章目录
前言
一、什么是方法
1.什么是方法?
方法是程序中最小的执行单元
实际开发中的应用场景
2.实际开发中,什么时候用到方法?
重复的代码,具有独立功能的代码可以抽取到方法中
3.实际开发中,方法有什么好处?
(1)提高代码的复用性
(2)提高代码的可维护性
二、最简单的方法定义和调用
1.方法的格式
起方法名的时候要见名知意,驼峰命名:
一个单词:全部小写
多个单词:从第二个单词开始开头要大写
2.方法的调用
public class MethodDemo1 {
public static void main(String[] args) {
//目标:掌握最简单的方法定义和调用的格式
//调用方法,想调用几次就写几次
playGame();
playGame();
}
//方法的定义要写在main的外面,类的里面
//定义一个方法
public static void playGame(){
System.out.println("选人物:");
System.out.println("准备开局");
System.out.println("对线");
System.out.println("崩盘");
System.out.println("骂队友");
System.out.println("送人头");
System.out.println("Game Over");
}
}
3.看代码说结果
4.为什么要有带参数的方法呢?
三、带参数的方法定义和调用
1.带参数的方法定义和调用
public class MethodDemo2 {
public static void main(String[] args) {
//目标:掌握带参数方法定义的格式和调用的格式
getSum(10,20);//注意个数和类型必须对应
}
public static void getSum(int num1,int num2){
int result=num1+num2;
System.out.println(result);
}
}
2.形参和实参
3.人肉计算机1
public class MethodDemo3 {
public static void main(String[] args) {
//需求:定义一个方法,求长方形的周长,将结果在方法中进行打印
//目标:根据不同的需求,选择定义无参的方法,还是带参的方法
getlength(5.2,1.3);
}
//1.我要干嘛?求长方形的周长
//2.我干这件事情,需要什么才能完成? 长,宽
public static void getlength(double len,double width){
double result=(len+width)*2;
System.out.println(result);
}
}
4.人肉计算机2
public class MethodDemo4 {
public static void main(String[] args) {
//需求:定义一个方法,求圆的面积,将结果在方法中打印
//目标:根据不同的需求,选择定义无参的方法,还是带参数的方法
getArea(1.5);
}
//1.我要干嘛?求圆的面积
//2.我干这件事情,需要什么才能完成?半径的平方
public static void getArea(double radius){
double result=radius*radius*3.14;
System.out.println(result);
}
}
四、带返回值方法的定义和调用
1.带返回值方法的定义和调用
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学习内容哦~😘💕💕