最近专门再网上收集了再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的是引用类型的,改动将可以起效果。不知其原理、寻求高手解答、并能告诉我参考资料、谢谢。
也对如下代码进行了验证:
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的是引用类型的,改动将可以起效果。不知其原理、寻求高手解答、并能告诉我参考资料、谢谢。
解决方案 »
- java.lang.String最多能存储多长的字符串?
- java中启动线程调用了哪个函数
- 在线等:Logger在控制台重复输出问题,而且还是有规律的重复输出
- 为何所有swing包的UI组件都显示不出来????
- class.forname()的问题
- 标题:谁要JSP实现的网上书店系统
- 怎样用java在连接finace.yahoo.com/q后查询一个sunmicrosystems quote??
- 要学的倒底是语言还是工具?
- (新手)请教这个线程的错误在哪?
- Frame里有两个Panel,可以实现单独对每个Panel加键盘监听,对整个Frame监听不了,为什么?
- 如何在windows启动后就在后台执行我的java程序?
- 用java实现语音输入文本
{
String name = "aaa";
return name;
}
如上一段代码是不是会在栈中重新生成一个引用(即复制一份引用)、然后返回的是复制引用所指向的对象呀???