【系列03】方法的学习 方法重载 命令行传参 递归 简单计算机 [有目录]
方法的学习
什么是方法
- 方法是解决一类问题的步骤的有序组合
- 包含于类或者对象之中
- 方法在程序中被创建,在其他地方被引用
就比如输出方法如:System.out.println(); 就是被封装好的方法
- 方法设计原则:一个方法完成一个功能,利于后期扩展 [原子性]
使用方法:
public class Demo01 {
//main 方法
public static void main(String[] args) {
/**
* int sum = add(1, 2);
* System.out.println(sum);
*/
way();
}
//加法
public static int add(int a, int b) {
return a + b;
}
public static void way() {
for (int i = 0; i <= 1000; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t");
}
if (i % (5 * 3) == 0) {//换行
//System.out.println();
System.out.println("\n");
}
}
}
}
方法的定义
方法调用:比大小
public class Demo02 {
public static void main(String[] args) {
int lager = max(3, 5);
System.out.println(lager);
}
//比大小
public static int max(int a ,int b){
int result = 0;
if(a>b){
result=a;
} else if (a<b) {
result=b;
}else {
System.out.println("a==b");
return 0;//终止方法;返回
}
return result;
}
}
- 使用心得
- 方法命名格式定义的是形参.
- 方法定义必须要有返回值 返回值return要写在外面,比如像上面这一题返回的时候可以让返回值赋值到外面在返回,就是做一个中间值.
- 不要忘记放输出,刚刚做的时候就是没有定义输出值.
重载
-
一个方法的参数名和方法名有关,如果方法一样,参数名不一致则为重载,与返回值类型无关
-
就比如刚刚比大小的那个,我们可以有double进行浮点型数据比大小
public static int max(int a ,int b){ }
public static double max(double a ,double b){ double result = 0; if(a>b){ result=a; } else if (a<b) { result=b; }else { System.out.println("a==b"); return 0;//终止方法;返回 } return result; }
-
也可以比较三个数的大小
public static int max(int a ,int b,int c){ }
-
方法名称相同时,会在调用方法时对参数个数 参数类型 等去进行判断,以选择对应方法,如果匹配失败,则编译器报错
重载规则
- 方法名必须相同
- 参数列表必须不同(个数 类型 参数排列顺序)
- 返回类型可以相同可以不同
- 仅仅返回类型不同不足以成为方法的重载
拓展:命令行传参
- 编写如下代码
package com.SunAo.method;
public class Demo03 {
public static void main(String[] args) {
for(int i=0;i< args.length;i++){
System.out.println("args["+i+"]"+args[i]);
}
}
}
-
在该路径下面无法直接用命令行进行传参
Alt+F12打开Terminal
-
需要我们找到绝对路径
-
cmd+空格 进入命令行
-
实现命令行传参
javac+文件名
对java文件进行编译- ```cd …/`回退
- 回退到KuangStudy路径以后才能进行传参
可变常参数
package com.SunAo.method;
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.test();
}
public void test(int...i){//可变常参数必须放在最后面
}
}
-
int...i
可变常参数必须放在最后面正确
public void test(int j,int...i){ }
下面错误
-
public void test(int...i,int j){ }
递归 ``重点难点
递归:自己调用自己
-
递归算5的阶乘
package com.SunAo.method; public class Demo06 { public static void main(String[] args) { System.out.println(f(5)); } public static int f(int n){ if(n==1) { return 1; }else { return n*f(n-1); } } }
计算器
- java实现计算器功能 switch
package com.SunAo.method;
import java.util.Scanner;
public class DemoMath {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("----请输入计算内容(+ - * /)----");
System.out.println("----第一个数字----");
int a= scanner.nextInt();
System.out.println("----符号----");
String b = scanner.next();
System.out.println("----第二个数字----");
int c= scanner.nextInt();
switch (b){
case "*":
System.out.println(a*c);
break;
case "+":
System.out.println(a+c);
break;
case "-":
System.out.println(a-c);
break;
case "/":
System.out.println(a/c);
break;
}
}
}