方法注意细节1
1.如果方法要求有返回数据类型,则方法中最后的执行语句必须为return值;
而且要求返回值类型必须和return的值类型一致或兼容
//error
public double f1(){
}
//没有return返回double类型
//correct
public double f1(){
double d1 = 1.1;
return d1;
}
//attention!
public double f1(){
int a = 1;
return a; //double ——> int 所以不会报错(兼容)
}
2.return返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
3.如果方法是void,则方法体中可以没有return语句,或者只写return;
//pass
public void f2(){
return;
}
//error
public void f2(){
int n = 20;
return n;
}//不兼容的返回值类型
方法注意细节2
- 一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开,比如
getSum(int n1,int n2)
- 参数类型可以为任意类型,包含基本类型或引用类型,比如
printArr(int[][] map)//二维数组就是经典的引用类型
- 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数!
[getSum]
- 方法定义时的参数称为形式参数,简称形参;方法调用时的参数称为实际参数,简称实参,实参和形参的类型要一致或兼容、个数、顺序必须一致!
省略main方法……
AA a = new AA();
byte b1 = 1;
byte b2 = 2;
a.sum(b1,b2); //pass
a.sum(1.1,1.2); //error int不能转double
a.sum(100); //error 需要两个参数
class AA{
public int sum(int n1,int n2){
sum = n1 + n2;
return sum;
}
}
- 方法体
里面写完成功能的具体的语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法!即:方法不能嵌套定义。
public void f2{
public void f3{
} //error 方法不能嵌套定义
}
- 同一个类中的方法调用:直接调用即可。比如print(参数);案例演示:A类 sayOk调用print();
public class practice3 {
public static void main(String args[]) {
//
A a = new A();
a.sayOk();
}
}
class A{
//同一个类中的方法可以直接调用
public void print(int n) {
System.out.println("print()方法被调用 n =" + n);
}
public void sayOk() { //sayOk调用 print(直接调用即可)
print(10);
}
}
- 跨类中的方法A类调用B类方法:需要通过对象名调用。比如 对象名.方法名(参数);案例演示:
public class practice3 {
public static void main(String args[]) {
A a = new A();
a.m1();
}
}
class A{
public void m1() {
//创建B对象
B b = new B();
b.hi();
}
}
//跨类中的方法A类调用B类方法:需要通过对象名调用
class B{
public void hi() {
System.out.println("B类中的 hi()被执行");
}
}
- 特别说明一下:跨类的方法调用和方法的访问修饰符相关,先暂时这么提一下,后面讲到访问修饰符时,还要再细说。