7.3 return语句
return语句的作用上一节已经介绍了,return语句是函数的值。
关于return语句,总结如下:
(1)return语句返回的数据类型,必须和函数声明的返回类型一致
例如下面的函数test,它的返回类型是boolean,于是它的返回值只能是true或者false
public static boolean test(int x){ if(x > 0) return true; else return false;}
(2)函数运行到return语句的时候,函数就结束了,因为函数的计算结果已经出来了。return后面的语句全部都会显示语法错误,显示为“Unreachable code(不可达代码)”。
如下图所示,函数good在第6行已经运行到return语句,也就是已经结束,第8行代码就会显示语法错误:
(3)如果函数的返回类型是void,那么可以没有return语句,如果有,只能是“return;”,后面不能接任何类型的值或表达式。
关于void类型的return,是这样使用的:需要马上结束函数的运行的时候。例如下面的代码,先检查参数,是不是为空,然后再打印,如果是空的就没必要打印了,直接返回。
public static void welcome(String name){
if(name==null || name.equals(""))
return;
System.out.println("欢迎你"+name);
}
下面的print1是另一个void类型又使用return语句的例子,如果不用return语句,可以用else来达到目的,如print2所示,这两个函数使用起来是一样的。
public static void print1(int x,int y){
if(x > y){
System.out.println(x);
return;
}
System.out.println(y);
}
public static void print2(int x,int y){
if(x > y){
System.out.println(x);
}
else{
System.out.println(y);
}
}
无返回值的函数不能计算出一个值,作为最终的值,因为这类函数并不是用来计算值的,而是完成某些功能。有一些没有返回值的函数我们每次练习都在使用,例如main函数,或者打印函数System.out.println。
main函数是特殊的函数,它由我们定义,但是由编译环境去执行。这个函数在开头都要写上void,这就表示该函数没有返回值。下面我们来看看另外一个例子:
static void tip(char c){
System.out.println("你好!你输入的是"+c);
}
tip这个函数,只打印了一句话。把输入的字符打印到一句话里面,就结束了。没有计算结果、没有return语句、没有值的输出。
没有返回值的函数,不能用一个变量去保存。这其实也很明显:函数本身没有计算结果,也就不需要保存计算结果了。这类函数调用示范如下:
public static void main(String[]args){
tip('a');
}
(4)如果函数的类型不是void,那么一定要有一条return语句能执行到,否则就是语法错误。
关于这点,看下面的例子,在分支结构里面直接return,不管任何情况,都有返回值:
public static int func(int x){
if(x > 0)
return x;
else
return-x;
}
下面这个就会出错了:
public static int func(int x){
if(x > 0)
return x;
else if(x >-10)
return-x;
}
因为x可能两个条件都不满足,从而没有return语句。例如x是-20的时候。
还有下面这样的情况,明明所有情况都包含了,但仍然出错,理由仍然是一定需要一条return语句:
public static int func(int x){
if(x > 0)
return x;
else if(x <= 0)
return-x;
}
因为编译器不会检查你的两个条件(或者多个条件)是否是完全互斥的从而覆盖了所有的情况。对于这种情况,最后就不要写else if了,直接写else。