程序执行到方法里面的return语句时,方法就会返回,return下面的语句不会被执行。
例:
public class MethodTest{
public static void main(String[] args){
//不接收返回值也行,符合语法规则,编译可以通过。
sumInt(10,20);
//对于有返回值的方法,通常都会定义变量用来接收方法的返回值
int result = sumInt(10,20);
System.out.println("计算结果是:"+result);
}
public static int sumInt(int a,int b){
int c = a + b;
return c; //程序执行到此处sumInt方法执行结束。并将int类型的值c返回
}
public static int test1(){
return 1; //这行代码只要执行,整个方法就结束了。
//System.out.println("hello"); //这里的代码是无法执行的,编译报错。
}
public static void test2(){
return; //可以,return后面没有返回任何数据
}
/*
public static int test3(){
return; //错误
}
*/
}
如果方法有返回值,那么要在其方法里面设置返回值。
例:
public class MethodTest{
/*
* 编译阶段不会运行代码,编译器并不知道flag的值,它只知道flag要么是true,要么是false。
* 对于test1方法,编译器会考虑到当flag为false的时候,该方法就没有返回值了,所以在编译阶段会报错
*
*/
/*public static int test1() {
boolean flag = true;
if (flag) {
return 1;
}
}*/
//以下程序还是编译报错,因为编译器就认为以下的这个if语句的大括号当中的代码可能执行,也可能不执行。
/*
public static int test2(){
if(true){
return 1;
}
}
*/
//if结合else使用,这样要么执行if中的语句,要么执行else中的语句。
//此时编译器可以判定这个程序return 语句一定会执行的
public static int test3(boolean flag) {
/*
* 下面这种写法会报错,需要在else里面设置返回值
*/
/*if (flag) {
return 0;
} else {
System.out.println("1");
}*/
if (flag) {
return 0;
} else {
return 1;
}
}
//下面程序会报错吗?
//不会报错,因为这样编写可以保证一定会有一个return语句执行
public static int test4(){
boolean flag = false;
if(flag){
return 1;
}
return 0;
}
}
break,continue和return的区别
break; 和 continue; 这两个语句主要是用来控制循环的,跟方法没有关系。
return; 和以上的两个语句不是一个级别的,return;是用来终止当前方法的。
public class Test {
public static void main(String[] args){
test();
System.out.println("hello world!");
}
public static void test() {
for( int i = 0 ; i < 10 ; i ++ ){
if( i == 5 ){
//break;
//continue;
return; //终止当前方法的执行。(不是终止JVM的执行)
}
System.out.println("i = " + i);
}
}
}