方法是类或对象的行为特征的抽象。方法不能独立存在,方法必须属于类或对象。定义方法,只能在类体内定义,不能独立定义一个方法,一旦将一个方法定义在某个类的类体重,如果这个方法使用了static修饰,则这个方法只属于这个类,否自这个方法属于这个类的实例。
执行方法时必须使用类或对象来作为调用者,即所有的方法必须使用“类.方法”或者“对象.方法”的形式来调用,同一个类的一个方法调用另外一个方法时,如果被调用的方法时普通方法,则默认使用this作为调用者;如果被调用方法时静态的方法,则弄人使用类作为调用者。
Java里方法的参数传递方式只有一种:值传递。实例代码如下:
public class PrimitiveTransferTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 5;
int b = 7;
swap(a,b);
}
private static void swap(int a, int b) {
// TODO Auto-generated method stub
int tmp = a;
a = b;
b = tmp;
System.out.println("swap: a:"+a+" b: "+b);
}
}
从jdk1.5之后,java允许定义形参个数可变的参数,从而允许为方法指定数量不确定的形参。如果定义方法时,在最后一个形参的类型后增加(...),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。实例程序如下:
public class Varargs {
public static void test(int a, String...names){
for (String tmp : names){
System.out.println(tmp);
}
System.out.println(a);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
test(3,"Jack","Bob","Jason");
}
}
递归方法:一个方法体内调用它自身,被称为方法递归。方法递归包含了一种隐式的循环,它会重复某段执行代码,但这种重复执行无须循环控制。如定义一个数学数列:f(0) = 1, f(1) = 4, f(n+2) = 2*f(n+1)+f(n), 求f(10)。
public class Recursive {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(fn(10));
}
private static int fn (int i) {
// TODO Auto-generated method stub
if(i==0){
return 1;
}
else if (i == 1){
return 4;
}
else {
return 2*fn(i-1)+fn(i-2);
}
}
}
方法的重载:Java允许同一个类里定义多个同名方法,函数名相同,形参不同,具体如下代码实例:
public class Overload {
public static void main(String[] args) {
// TODO Auto-generated method stub
Overload o1 = new Overload();
o1.test();
o1.test("java");
}
private void test() {
// TODO Auto-generated method stub
System.out.println("null");
}
private void test(String string) {
// TODO Auto-generated method stub
System.out.println("hello "+string);
}
}