public class FinallyTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FinallyTest ft=new FinallyTest();
System.out.println(ft.f());
}
public String f(){
String a="";
try{
a="345";
return a;
}finally{
a = "678";
}
}
}
为什么最后输出结果是:345
因为finally中的a="678"是执行了的.求教!
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FinallyTest ft=new FinallyTest();
System.out.println(ft.f());
}
public String f(){
String a="";
try{
a="345";
return a;
}finally{
a = "678";
}
}
}
为什么最后输出结果是:345
因为finally中的a="678"是执行了的.求教!
public class FinallyTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FinallyTest ft=new FinallyTest();
System.out.println(ft.f());
} public String f(){
String a="";
try{
a="345"; }
finally{
a = "678";
return a; // 返回值
}
}
}
public class FinallyTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FinallyTest ft=new FinallyTest();
System.out.println(ft.f());
} public String f(){
String a="";
try{
a="345"; }
finally{
a = "678"; }
return a; //finally 外面
}
}
为什么最后打印出来a的值还是345????
public class FinallyTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FinallyTest ft=new FinallyTest();
System.out.println(ft.f());
} public String f(){
String a="";
try{
a="345"; System.out.println("try-one");
return a;
}
finally{
a = "678";
System.out.println("try-two"); }}
}
a = "678";
return a;}
例如等待用户输入数据的时候,你没有输入直接让程序停止,那么FIANLLY也是不会执行到的。
对于楼主说的问题,
我认为可以这样理解:try{
a="345";
return a; //返回的是A当前的值
}finally{
a = "678"; //在返回值后A的值改变,但是没有返回当前A改变后的值
} 也就是说,调用这个方法以后A的值为“678”了,但是并没有返回这个值!如果变一下:
try{
a="345";
return a;
}finally{
a = "678";
return a;
}
不管发生什么,返回的值绝对是“678”
但是return不会最后执行啊
a是个字符串
a="345"; "345"是个字符串 没有异常所以输出345