【发布时间】:2013-11-10 18:48:39
【问题描述】:
出于学习目的,我正在研究例外情况,我有一个问题。请看下面的代码:
public static void main(String[] args) {
System.out.print(getNumber());
}
public static double getNumber() {
double number =10;
try {
String [] students = {"nick","george"};
System.out.println(students[5]);
}
catch (ArrayIndexOutOfBoundsException ex ) {
System.out.println("In catch block "+ number);
return number;
}
finally {
number +=10;
System.out.println("The value is now "+ number);
}
System.out.println("hiiiii");
return number;
}
为什么在这种情况下主方法的输出是 10,为什么如果我运行相同的示例并返回一个对象,值会改变?
public static void main(String[] args) {
System.out.println("In main is "+getStringBuffer());
}
public static StringBuffer getStringBuffer() {
StringBuffer number = new StringBuffer("10");
try {
String [] names= {"george" ,"nick"};
System.out.println(names[5]);
}
catch (ArrayIndexOutOfBoundsException ex1) {
System.out.println("In catch block "+ number);
return number;
}
finally {
number.reverse();
System.out.println("In finally is "+ number);
}
System.out.println("hiiii");
return number;
}
【问题讨论】:
-
"...为什么如果我运行相同的示例并返回一个对象,值将被更改?" 嗯?你能告诉我们你的意思吗?什么样的物体?
-
@T.J.Crowder 这就是我的意思..请立即查看已编辑的问题
-
@notArefill:啊,因为你改变的是对象的状态,而不是返回的值。
标签: java