Java方法详解
何为方法?
System.out.println(),其中System是系统的一个类,out是对象,print是类里边的方法。
- 方法是语句的集合,它们在一起执行一个功能
方法是解决一类问题的步骤的有序组合
方法包含于类或者对象中
方法在程序中被创建,在其他地方被引用 - 设计方法的原则
一个方法只完成一个功能,这样有利于我们后期的扩展,即称为方法的原子性
方法的定义★★
/*
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体;
return 返回值;
}
*/
修饰符:修饰符是可选的
返回值类型:void表示无返回值,返回值类型还可以是int、double、char、String等
方法名:首字母小写和驼峰原则
参数类型:参数是可以选择的。参数为形式参数,即表示方法中起定义作用的参数。实际参数表示实际调用中传递给方法的参数。Java是值传递,只是将具体的数值传递给方法中的各个参数,方法中的赋值不会改变参数原始的值。
方法调用
- 调用方法:对象名.方法名(实参列表)
- Java支持两种调用方法的方式,根据方法的返回值来选择
①当方法返回一个值的时候,方法调用通常被当作一个值
int lager = max(30, 40);
②如果方法返回值是void,方法调用一定是一条语句
System.out.println("hello, world!"); //println方法是没有返回值的 - Java是值传递,是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
方法的重载
方法重载是指在一个类中,有相同的函数名称,但是形参不同(参数类型、参数数量)的函数。方法重载的好处是不用为了不同的参数类型或者参数数量,而重新定义多个函数。调用的时候,虽然方法名字相同,但根据参数表可以自动调用相应的函数。
- 方法重载的原则
①方法名称必须相同
②参数列表不同(参数类型、参数数量或者参数顺序)
③方法的返回值类型可以相同也可以不同 - 实现原理
方法名称相同时,编译器会根据调用方法的参数个数、参数类型进行匹配,以选择对应的方法,如果匹配失效,则编译器会报错。
命令行传参
main方法中的args[]是一个数组,可以输入数据。Run-Edit Configurations-Program arguments
可变参数
可变参数对应于方法的重载,当仅仅因为方法参数的数量不同而进行方法重载时,需要进行重载的次数过多,或者因为传递参数不确定时,无法进行合适的方法重载,因此采用可变参数的方式可以较为简便的实现。
在方法声明中,在指定参数类型的后边加一个省略号(...)即可。一个方法中只能指定一个可变参数,且必须是方法的最后一个参数,任何普通的参数都必须在它之前声明。
public void method(double...numbers){
//方法体
}
递归
递归就是A方法调用A方法,自己调用自己。
利用递归可以用简单的程序解决一些复杂的问题,递归策略只需少量的程序就能描述出解题过程中所需要的多次重复计算,大大减少程序的代码量。
递归结构包括两部分:
①递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
②递归体:什么时候需要调用自身方法
需要注意的是,递归只适合较小的运算量,如果调用自身方法过多可能会造成栈溢出。
//阶乘方法
public static int f(int n){
if(n==1){
return 1;
}else{
return n*f(n-1);
}
}