八、Java方法详解
什么是方法
方法是语句的集合,他们在一起执行一个功能
- 方法是解决一类问题的步骤的有序组合
- 方法包含类或对象中
- 方法在程序中被创建,在其他地方被引用
- 方法设计原则:保持方法的原子性,一个方法只完成一个功能,利于后期拓展
e.g.
package com.kuang.method; public class Demo01 { //main方法 public static void main(String[] args) { int add=add(1,2); System.out.println(add); } //加法 public static int add(int a,int b){ return a+b; } }
方法的定义及调用
语法
修饰符 返回值类型 方法名(参数类型 参数名){
方法体
return 返回值;
}
比较大小
package com.kuang.method;
public class Demo02 {
public static void main(String[] args) {
int max = max(3, 3);
System.out.println(max);
}
//比大小
public static int max(int a, int b) {
if(a==b){
System.out.println("a=b");
return a;//终止方法
}else{
return a > b ? a : b;
}
}
}
方法重载
重载就是在一个类中,有相同的函数名称但是形参不同的函数
方法重载规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同,类型不同,参数排列顺序不同)
- 返回类型可以相同可以不同
- 返回类型不同不足以构成重载
public static void main(String[] args){
public static int max(int num1,int num2){
int resault;
return resault;
}
public static int max(double num1,int num2){
return
}
}
命令行传参
使用命令行传递参数
package com.kuang.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]);
}
}
}
需要在资源管理器中的文件夹下运行cmd,输入
javac Demo03.java
进行编译,运行需要返回至
src
目录下,输入
java 目录名.文件名 参数
运行
可变参数
如果出现不清楚多少参数的情况下可以使用可变参数
例如这种情况
public void main(String[] args) {
}
public void method(int i){
}
public void method(int i,int i1){
}
public void method(int i,int i1,int i2){
}
可以使用下面的方法
public void method(int... i) {
}
- 在方法声明中,在指定参数后面加一个省略号
...
- 方法声明中只可定义一个可变参数,必须是方法的最后一个参数,任何普通参数必须在它之前声明
递归
- 递归就是A方法调用A方法
使用递归实现阶乘
package com.kuang.method;
public class Demo06 {
public static void main(String[] args) {
System.out.println(f(5));
}
//5! 5*4*3*2*1
public static int f(int i){
if(i==1){
return 1;
}else{
return i*f(i-1);
}
}
}
简易计算器
package com.kuang.method;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double num1 = 0.0;
double num2 = 0.0;
double resault = 0.0;
String operator = "";
//运算符
System.out.print("请输入运算符(输入其他字符退出):");
if (scanner.hasNext()) {
operator = scanner.next();
}
while (true) {
if(operator.equals("x")||operator.equals("X")||operator.equals("*")
||operator.equals("/")||operator.equals("+")||operator.equals("-")){
System.out.println("请输入两个数(以空格或回车区分)");
num1 = scanner.nextDouble();
num2 = scanner.nextDouble();
}
switch (operator) {
case "*":
case "x":
case "X":
resault = num1 * num2;
break;
case "/":
resault = num1 / num2;
break;
case "+":
resault = num1 + num2;
break;
case "-":
resault = num1 - num2;
break;
default:
System.out.println("程序结束");
return;
}
System.out.println(num1+operator+num2+"="+resault);
System.out.print("请输入运算符(输入其他字符退出):");
if (scanner.hasNext()) {
operator = scanner.next();
}
}
}
}