public void init() {
解决方案 »
- windows下ipv4网络java 抓包、解包、封包
- 急啊。。。集合或者数组里面存对象,怎么在数组里面获取到对象的属性,在线等
- java与c# 关于选专业,请各位指点下。谢谢了
- 主线程何时结束的问题
- 为什么么不能清空content文本
- 如何把一个类型的对象克隆成另一个类型的对象
- 请教一个java.io.EOFException异常的解决
- 在java语言中嵌入sql的问题,希望大家帮帮忙,谢谢了
- 我刚JAVA自学,给点这个题的算法和思路!
- 一点java不会,想学习一下,大虾建议一下初学者用书与编程工具呗?
- 这种题该如何去解
- SWT中嵌入Swing的JTextFeild却不能编辑(有代码可以直接运行看效果)?
int i = 0;
try {
i = 3;
return i;
}catch(Exception e) {
i = 2;
return i;
}finally {
i = 1;
}
}
int i = 0;
try {
i = 3;
return i;
}catch(Exception e) {
i = 2;
return i;
}finally {
i = 1;
return i;
}
}
正常是try里的先走return 后面的运算,然后在走finlly
我就能理解到这里了。
我昨天才看的这个,还看到了 try 的开源
没太大必要研究那么底层吧
即当try块退出时,此时finally才会执行。而楼主的程序,try块什么时候退出呢?是在return语句时退出时。众所周知,return时,返回的是i的值,而不是i本身。此时,i 的值为3。但是赋值呢?是对i本身进行操作,所以finally中赋值改变的是i本身,并不影响return中对i的值的返回。有兴趣,也可以研究一下如下代码:public int init() {
int i = 0;
try {
i = 3;
}catch(Exception e) {
i = 2;
return i;
}finally {
i = 1;
}
return i;
}
//对BB对象进行操作时。
public static BB getBB() {
BB bb = new BB();
try {
bb.str += "try...";
return bb;
}
catch (Exception e) {
bb.str += "catch...";
return bb;
}
finally {
bb.str += "finally...";
//return bb;//如果是对象,这里的引用效果就导致finally里面用不用return都一样
}
}看见这个问题试了试,顺便回帖领取每日10分可用分
public int i;
public Obj(){
i = 1;
}
} public static Obj init(){
Obj o = new Obj();
try{
o.i = 3;
return o;
}finally{
o.i = 1;
}
} public static void main(String[] args) {
System.out.println(init().i);
}这样呢?
在try{}catch(){}finally中只要语句进了这个体中,就一定会执行finally部分,不管你有没有return之前,当try中出现return后,他会执行finally中的内容在return。