关于return和finally
来源:互联网 发布:linux应用程序开发详解 编辑:程序博客网 时间:2024/06/05 19:12
本来return和finally也不是个事。之前看虚拟机运行原理的时候就了解过。但是最近被人问起的时候,缺没有说清楚。所以整理一下记录下来。
1.如果返回的是个对象,finally里的的代码,可以改变对象内部的状态。
输出
try
finally
time:300
time:600
time:900
[phl, piaohailin]
2.finally里面的赋值,不会影响返回结果
输出
try
finally
time:300
time:600
time:900
phl
3.finally里带有return方法,则此return会覆盖try里面的return
//warnning finally block does not complete normally
一般不这么用,因为有警告信息,不够优雅
输出
try
finally
time:300
time:600
time:900
piaohailin
1.如果返回的是个对象,finally里的的代码,可以改变对象内部的状态。
- package com.chinaso.phl;
- import java.util.ArrayList;
- import java.util.List;
- public class Test {
- public static void main(String[] args) throws Exception {
- Test t = new Test();
- System.out.println(t.check());
- }
- public List<String> check() throws Exception {
- List<String> name = new ArrayList<String>();
- name.add("phl");
- try {
- System.out.println("try");
- return name;
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- System.out.println("finally");
- name.add("piaohailin");
- for (int i = 0; i < 3; i++) {
- System.out.println("time:" + (i + 1) * 300);
- Thread.sleep(300);
- }
- }
- System.out.println("return");
- name.add("return");
- return name;
- }
- }
输出
try
finally
time:300
time:600
time:900
[phl, piaohailin]
2.finally里面的赋值,不会影响返回结果
- package com.chinaso.phl;
- import java.util.ArrayList;
- import java.util.List;
- public class Test {
- public static void main(String[] args) throws Exception {
- Test t = new Test();
- System.out.println(t.check());
- }
- public String check() throws Exception {
- String name = "phl";
- try {
- System.out.println("try");
- return name;
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- System.out.println("finally");
- name = "piaohailin";
- for (int i = 0; i < 3; i++) {
- System.out.println("time:" + (i + 1) * 300);
- Thread.sleep(300);
- }
- }
- System.out.println("return");
- name = "return";
- return name;
- }
- }
输出
try
finally
time:300
time:600
time:900
phl
3.finally里带有return方法,则此return会覆盖try里面的return
//warnning finally block does not complete normally
一般不这么用,因为有警告信息,不够优雅
- package com.chinaso.phl;
- import java.util.ArrayList;
- import java.util.List;
- public class Test {
- public static void main(String[] args) throws Exception {
- Test t = new Test();
- System.out.println(t.check2());
- }
- public String check2() throws Exception {
- String name = "phl";
- try {
- System.out.println("try");
- return name;
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- System.out.println("finally");
- name = "piaohailin";
- for (int i = 0; i < 3; i++) {
- System.out.println("time:" + (i + 1) * 300);
- Thread.sleep(300);
- }
- return name;
- }
- }
- }
输出
try
finally
time:300
time:600
time:900
piaohailin
0 0
- 关于return和finally
- return和finally使用
- return和finally使用
- return 和finally
- Java中关于Return和finally的执行问题
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 关于java中 try和finally return的问题
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 【java学习】一个关于return和finally的例子
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- return和finally的使用
- try catch finally 和return
- acfun json 弹幕 转换 bilibili xml 弹幕
- 编写高效的android代码(译文)
- TIGASE 开发纪录一tigase的搭建
- Android 内存优化的几点知识
- Android 内存溢出的几点解决方法
- 关于return和finally
- Android NFC开发读写NDEF数据实例
- Android 编程规范
- 程序不报错但无法运行
- 【Java】打印一个0到1之间的实数的二进制表示
- JFreeChart画图示例
- Rotate Image
- Android 混淆导包APK时报错
- 编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言