Java基础-方法(四)
文章目录
一.方法的概述
1.方法的概述
1、具有某种特定功能的代码段
2、某段代码经常使用,所以使用大括号,将这段代码包起来,起个名字。以后就使用这个名字来代替这段代码。
3、好处:
(1)提高了代码的复用性
(2)提高了代码的封装性
(3)简化了软件设计的思维难度
public class Daniel_Demo1 { public static void main(String[] args) { //实际参数,实际调用传递给他的参数 int sum = add(1, 2); System.out.println(sum); } //加法 //形式参数,用来定义作用的 public static int add(int a,int b){ return a+b; }}
运行结果为:
2.方法的定义
3.方法的内存理解
class Demo_FangFa {public static void main(String[] args) {int m = 10;int n = 10;int sum = getSum(m,n);System.out.println(sum);}public static int getSum(int a,int b){int sum = a + b;return sum;}/*public static 盘子 炒菜(油 y,蔬菜 z,老干妈 m){放油 y放菜 z老干妈 mreturn 成品;}*/}
public class Daniel_Demo2 { public static void main(String[] args) { int max = max(20, 30); System.out.println(max); } public static int max(int num1,int num2){ int result = 0; if(num1 == num2){ System.out.println("num1 = num2"); return 0; } if(num1 > num2){ result =num1; }else{ result =num2; } return result; }}
运行结果为:
方法的注意事项:
1、方法定义:
1、方法不能嵌套定义
2、方法的先后没有区别
3、方法的定义是平级关系
4、方法可以嵌套调用,甚至可以自己调用自己
2、参数列表:
(1)形式参数:在定义方法时使用,需要加上数据类型的参数,也就是对于变量进行声明。各个变量之间,使用逗号分隔。
(2)实际参数:在方法调用时使用,不能加上数据类型的参数,也就是对于变量进行赋值。各个实际参数之间,也使用逗号分隔。顺序必须和定义的方法的形式参数的顺序一致。
3、return语句:
(1)语句表达方法结束了;表示方法的产出内容。
(2)如果方法没有具体的返回内容,可以写成return; 此时的return语句可以省略。返回值类型必须写成void。
(3)如果方法有具体的返回内容,那么return后面就需要加上返回的那个数据。返回值类型必须和return语句后面的数据的数据类型一致。
(4)return语句返回数据,返回给调用者。谁来调用当前方法,当前方法就将数据返回给谁。
4.方法的调用
System.out.println(“Hello,Daniel!”);
拓展了解(值传递和引用传递)
5.方法的重载
1、重载:Overload
2、方法的重载:
在同一个类中,方法名相同,参数列表不同,与返回值类型无关
3、说明:
(1)不同无关类中,不可能发生方法的重载的。
(2)方法名称相同:一模一样。
(3)参数列表不同:参数类型不同;参数个数不同;参数类型的顺序不同;
参数的名称不同(不算)
(4)与返回值类型无关。方法是否是重载,与返回值类型没有关系。
如果方法的名称和参数列表都一样,即使返回值类型不同,也不算重载,属于方法 的重复定义。
4、方法重载的好处:
(1)没有重载的时候,相同逻辑相同功能的代码,需要定义很多个方法名称。调用者在记忆方法名称的时候,就有很大的负担。
(2)有重载之后,相同功能逻辑的方法,只需要记忆一个名字。
5、当前学习过的常见重载:
println方法,任意类型的数据,都可以放到这个方法中打印
在System.out类型中,将各种数据类型的打印方法,都定义出来了,都起了println方法的名称
public class Daniel_Demo3 { public static void main(String[] args) { //方法名相同,参数或参数类型不同 double sum = getSum(20, 30, 40); System.out.println(sum); } public static int getSum(int a,int b){ return a+b; } public static double getSum(double c,double d,double e){ return c+d+e; }}
运行结果为:
二、拓展
1.命令行传参
有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。
public class Daniel_Demo4 { //args.length 数组长度 public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println(args[i]); } }}
结果如下操作显示:
2.可变参数(不定项参数)
3.递归(递归思想)
public class DiGui_Daniel { //递归就是学习一个递归思想,复杂业务最好不要用递归, // 因为自己调用自己太累了 //说到Java也就是一个栈机制 public static void main(String[] args) { System.out.println(f(3)); } public static int f(int n){ if(n == 1){ return 1; }else{ return n*f(n-1); } }}
运行结果为:
分析上述代码