JAVA方法
- JAVA方法是语句的集合,一起执行某一功能。方法包含于类或对象中,程序中被创建,其他地方被引用
- 设计原则:一个方法只完成一个功能,以便后期扩展
- 命名规则是驼峰命名
方法定义
- 修饰符:可选,定义该方法的访问类型
- 返回值类型:可以不返回void ,也可以自定义返回值的类型int、double…
- 方法名:方法的实际名称
- 参数类型:方法里的参数名称像一个占位符,被调用时才会传入实参,否则为形参,也可以无参数。
- 方法体:具体的语句,定义改方法的功能
public static void main(String[] args) {
int sum = add(1,2);
//实参: 实际调用给它的参数
System.out.println(sum);
}
//add方法 方法类似于其他语言的函数
//方法明明遵守驼峰命名法
//形参,用来定义作用的
public static int add(int a,int b){
return a+b;
}
- return 除了返回参数外,还能用于终止方法
public static void main(String[] args) {
int max = max(10,20);//传递实参
System.out.println(max);
}
public static int max(int num1,int num2){
int result = 0;
if(num1==num2){
return 0;//终止方法
}
if(num1>num2){
result = num1;
}else {
result = num2;
}
return result;//返回参数
}
方法重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数
- 方法名称必须相同
- 参数列表必须不同(参数个数、类型、排列顺序等存在不同)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
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;//int类型
}
public static double add(double a,double b){
return a+b;//double类型
}
public static double add(double a,double b,double c){
return a+b+c;//三个参数
}
//根据main方法中调用时的实参类型和字数,系统自动匹配调用哪一个方法
命令行传递参数
- 首先编辑代码
public class Demo04 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args[" +i+ "]:"+args[i]);
}
}
}
- 从代码文件所在路径打开明框输入
javac -encoding UTF-8 文件名.java
编译文件 - 然后退回到src目录下(因为如果文件在所建包中,不退回,会报错)
- 在src目录下输入
java 文件路径.文件名 perfec solution
F:\IDEA\code\untitled1\Demo\src\Method>javac -encoding UTF-8 Demo04.java
F:\IDEA\code\untitled1\Demo\src\Method>cd..
F:\IDEA\code\untitled1\Demo\src>java Method.Demo04 perfect solution
args[0]:perfect
args[1]:solution
可变参数
- 在方法声明中,在指定参数类型后加一个省略号(…)
- 一个方法中只能指定一个可变参数,且必须是最后一个参数
public class Demo05 {
public static void main(String[] args) {
Demo05 demo05 = new Demo05();
demo05.test(2,3,4);
}
public static void test(int... i){ //定义一个不确定项,根据输入进行输出
System.out.println(i[2]); //结果为:4
}
}
递归
- 递归就是自己调用自己
- 递归方法包括递归头和递归体。递归头:是么时候不调用自己,防止陷入死循环。递归体,什么时候调用自身。
public static void main(String[] args) {
System.out.println(factorial(5));//输出结果为:120.0
}
//求阶乘
public static double factorial(int n){
double result = 0;
if(n==1){
return 1;
}else {
result = n*factorial(n-1);
}
return result;
}
- 小规模的计算可以用递归,但递归过深时,会导致栈溢出,因此不适用于大规模计算
练习
import java.util.Scanner;
//计算器
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据1:");
double num1 = scanner.nextDouble();
System.out.println("请输入运算符:");
String oper = scanner.next();
System.out.println("请输入数据2:");
double num2 = scanner.nextDouble();
switch (oper){
case "+":
System.out.println("和为:"+add(num1,num2));
break;
case "-":
System.out.println("差为:"+sub(num1,num2));
break;
case "*":
System.out.println("积为:"+mul(num1,num2));
break;
case "/":
System.out.println("商为:"+div(num1,num2));
break;
}
scanner.close();
}
public static double add(double num1,double num2){
return num1+num2;
}
public static double sub(double num1,double num2){
return num1-num2;
}
public static double mul(double num1,double num2){
return num1*num2;
}
public static double div(double num1,double num2){
return num1/num2;
}
}
结果:
请输入数据1:
100
请输入运算符:
+
请输入数据2:
200
和为:300.0