方法介绍
方法在C或其它面向过程的语言中又称为函数:
method or function
我们接触过的第一方法为:
public static void main(String args[]){
}
方法组成
方法名是方法存在的唯一标识,必须是合法的java标识符,如果方法名为fun,则可以通过fun()来调用这个方法。
访问修饰符有:缺省,public, protected, private
(以后讲解)
方法类型为非static修饰的成员方法和static修饰的静态方法(类方法)-(以后讲解)
方法的返回值
方法的返回值可以为基本数据类型或复合数据类型,也可以没有返回值,如下:
void t(){} //没有返回值
int t(){ //返回值为整数类型
return 1; //因为定义了返回值类型为整数,
所以必须返回一整数值
}
String t(){ //返回值为字符串类型
return “abc”; //因为定义了返回值类型为String,
所以必须返回一String值
}
注意1:如果没有给方法定义返回值类型,如:
void t(){}
则一定不能在方法体内返回某一个值,如:
void t(){
return 1; //Error
}
但是可以在方法体内使用return,如:
void t(){
return; //OK
}
注意2:方法的返回值必须与定义的返回值类型一致,如:
boolean t(){}
则不能返回字符串值,如:
boolean t(){
return “true”; //Error
}
应为:
boolean t(){
return true; //OK
}
注意3:方法用return返回后,方法的调用就结束了,如:
void t(){
return; //方法至此结束
}
所以以下代码存在语法错误:
void t(){
return;
System.out.println(“stupid”);//不可能被调用的语句,语法错误!
}
参数
int add(int a, int b){
return a+b;
}
以上方法add存在两个参数:
整型类型的参数a
整形类型的参数b
调用方法可以用:
add(1, 2);
不可以传入错误的参数类型如:
add(“1”, 2); //Error
*隐式转换的问题:
如果方法为:
void t(double d){}
考虑用以下方式调用时,是否会有错误:
t(‘我’); //?
t(“我“); //?
解析:如果传入的参数类型可以隐式转换为定义的参数类型,则系统会自行转换,不会出现错误
复合数据类型的传递
void t(int[] a){}
以上方法中参数类型为整数数组,属于复合数据类型
调用方式如下:
int x[] = new int[]{1, 3};
t(x);
注意:不要写成了t(x[])或t(x[0]);
因为数组中可分为栈和堆,栈中存放的是指向对应堆的地址,而堆中存放的是数据,a[0]在栈中地址是一样的,指向同一个堆,因此a里面的元素的值改变了。