String s = "a" + "b" +"c" + "d";
创建了一个String对象,由于java编译器在编译时对这种字符串常量进行相加优化!
public class Test{
public static void main(){
System.out.println(new Test().test());
}
static int test(){
int x = 1;
try{
return x;
}
finally{
++x;
}
}
int test2(){
try{
return 1;
}
finally{
return 2;
}
}
}
test:return x;已经将结果复制一份放到返回栈中。所以返回为1。
test2中将结果 1 放回到返回栈中,finally又将2 放回到返回栈中覆盖了1,所以结果为2.
异常处理:
public void method1(){
try{
throw new Exception();
}catch(Exception e){
}finally{
}
System.out.println("process in this!");
}
此方法可正常运行,可以打印“process in this!”
在java中若某线程产生普通异常但程序没有捕捉,就会终止该线程,否则可以继续执行。
产生异常执行顺序 try catch finally ,未产生异常 try finally 若在catch中有return 语句,先将结果放回到返回栈后再继续执行finally 语句,finally语句可以改写返回值,同上一题。