转载 http://bbs.csdn.net/topics/300219717
最近专门再网上收集了再trycatchfinally中return的使用、得到得答案好像都是这样的、return语句会把后面的值复制到一份用来返回,如果return的是基本类型的,finally里对变量的改动将不起效果,如果return的是引用类型的,改动将可以起效果。
也对如下代码进行了验证:package com.wxhx.java.exception;
public class ExceptionTest2
{
public static void main(String[] args) {
System.out.println("=============test1==================");
System.out.println(test1());
System.out.println("===============================");
System.out.println("=============test1_1==================");
System.out.println(test1_1());
System.out.println("===============================");
}
public static String test1() {
String a = "in try";
try {
return a;
} catch (Exception e) {
} finally {
a = "in finally";
System.out.println("do finally");
}
return a;
}
public static String test1_1() {
String a = "in try";
try {
return a;
} catch (Exception e) {
} finally {
a = "in finally";
System.out.println("do finally");
return a;
}
}
}
那我再想一段普通代码的return、如下:
public String getName()
{
String name = "aaa";
return name+"bbb";
}
实现的原理还是return语句会把后面的值复制到一份用来返回,如果return的是基本类型的,finally里对变量的改动将不起效果,如果return的是引用类型的,改动将可以起效果。不知其原理、寻求高手解答、并能告诉我参考资料、谢谢。