//方法:类比于C语言中的函数,完成特定的功能,可能有返回值,也可能没有返回值,当没有返回值时,方法类型为void
/*
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;//可能没有
}
*/
public class Demo01 {
//写一个加法的方法
public static double add(double a,double b){
return a+b;//return可以用来终止方法,如果定义方法返回值类型,必须在方法中return一个值
}
public static void main(String[] args) {
double x=add(2.55,9.888);
System.out.println(x);
}
}
方法的重载
/*
方法的重载
1.方法名称必须相同
2.参数列表必须不同(数量不同,类型不同或参数类型顺序不同)
3.参数返回类型可以相同或者不同
4.返回类型不同不足以成为方法的重载
*/
public class Demo02 {
public static double add(double a,double b){
return a+b;
}
public static int add(int a,int b){
return a+b;
}
public static int add(int a,int b,int c){
return a+b+c;
}
//方法会根据实参的不同而调用相应的方法
}
命令行传参
//命令行传参
public class Demo03 {
public static void main(String[] args) {
for (int i=0;i<args.length;i++){
System.out.println("args["+i+"]:"+args[i]);
}
}
}
可变参数
import java.util.Scanner;
/*
可变参数
1.在方法申明中,在指定参数类型后加一个省略号(...)
2.一个方法只能指定一个可变参数,且必须是方法的最后一个参数,任何普通的参数必须在它之前申明
*/
public class Demo04 {
public static void main(String[] args) {
//由键盘输入浮点数组,比较大小
System.out.println("请输入需要比较的数组,用','隔开数字");
Scanner scanner=new Scanner(System.in);
String str=scanner.next().toString();//将输入的数据转换为字符串
String[] test=str.split(",");//用‘,’来分割字符串
double[] b=new double[test.length];
for (int i=0;i<b.length;i++){
b[i] = Double.parseDouble(test[i]);//将字符串类型转换为double类
//b[i]=(double)test[i];此种不能进行,因为类型转换只能支持同类型数据转换
System.out.println(b[i]);
}
Max(b);//调用方法
scanner.close();
}
public static void Max(double... number){
if (number.length==0){
System.out.println("错误");
}
//排序
double result=0;
for (int i=0;i<number.length;i++){
if (number[i]>result){
result=number[i];
}
}
System.out.println("最大的数为:"+result);
}
}
递归
import java.util.Scanner;
//递归:调用自己的方法就是递归方法
//递归应该有一个边界,即让递归终止的方法
public class Demo05 {
public static void main(String[] args) {
System.out.println("请输入想要求的阶乘数");
Scanner scanner=new Scanner(System.in);
System.out.println(Factorial(scanner.nextInt()));
scanner.close();
}
//写一个求阶乘的方法
public static long Factorial(int n){
if (n==1){
return 1;
}
else{
return n*Factorial(n-1);
}
}
}