请看代码!~:
代码1:
public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 2;
return i;
return j; //错误在于两个return无法返回!~~j;
}
}代码2: public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 2;
if(i == 1) {
return i; //语句正确!~ 虽然有两个return,
}
return j;
}
}代码3: public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 2;
if(true) {
return i; //代码竟然错误!~ 只不过将 i == 1 换为了 true!~ 不明白为什么影响了!
}
return j;
}
}
代码4:public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 5;
while( i >= 1) {
i ++;
return i; //将 i ++ 一次的值返了回去!~ 并不再往下执行?。 那到底有没有往下执行呢?
}
return j;
}
}
代码5: public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 5;
while(true) {
i ++;
return i; //还是同样的语句!~ 只是换成了true "return j;" 变成了无法访问!~ 为什么会出现这样的情况呢?
}
return j;
}
}
你想做什么呢?return 两个值?
为什么在这种条件true的情况下, 两个return 不会受到影响?.
而为什么直接写两个return 就会受到影响呢?>..
希望大家也将自己的疑问代码帖出来分享!~ 并解决心中疑问!~~~
我是不明白的是 !~ 在这种加了条件的 return 为什么可以写两个呢 ?.
一个方法是中是不能有两个编译就能确定的return 语句的
回:
代码 2 , 3 的比较
if(i == 1) 这个是否为true 只有在运行是才知道。给i付值是运行时刻做的事情。
if(true) 这个编译就能确定 。
回 :
代码4
没有往下执行, 第一个return 跳出循环,结束方法。
代码5 的原因同 2,3的一样。
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 2;
return i;
return j; //错误在于两个return无法返回!~~j;
}
}
楼主有没有运行过,有没有看过编译错误!!!if(true)return i;
return j;这个有些欺骗编译器的感觉
不过在开发阶段中测试时,真的很好用
由以上的程序运行的结果来看:执行到语句return 之后, 后面就开始检查 "}" , 如果没有发现 , 所有的语句进行栈的处理 ,报出错误,