java-try,return和finally相遇时的各种情况
今天碰到了这样一个问题;使用try,return和finally会碰到的各种情况
1,try中有return时,执行顺序;
2,try和finally中都有return时,执行顺序;
3,运算代码在finally中,try中return返回值时的执行顺序;
代码:
public class tryfinally {
static int i=0;
public static void main(String[] args) {
int value=getValue1();
System.out.println(value);
System.out.println(getValue());
System.out.println(getValue1());
System.out.println(getValue2());
System.out.println(getValue3());
}
@SuppressWarnings("finally")
public static boolean getValue(){
try{
return true;
}finally{
return false;
}
}
@SuppressWarnings("finally")
public static int getValue1(){
try{
return i;
}finally{
i++;
System.out.println(i);
}
}
@SuppressWarnings("finally")
public static int getValue2(){
int y=0;
try{
return y;
}finally{
y++;
System.out.println(y);
}
}
}
@SuppressWarnings("finally")
public static int getValue3(){
int z=0;
try{
return z;
}finally{
z++;
}
}
结果:false
1
0
1
0
1
0
0
我的结论:代码按顺序执行,有多个return时返回的同一个值时后者覆盖前者。
java-try,return和finally相遇时的各种情况的更多相关文章
- Java中try、finally语句中有return时的执行情况 [转]
原文:http://kingj.iteye.com/blog/1436761 在Java中当try.finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大 ...
- 分析轮子(八)- List.java 各种遍历方式及遍历时移除元素的方法
注:玩的是JDK1.7版本 1:先尝栗子,再分析,代码简单,注释清晰,可自玩一下 /** * @description:测试集合遍历和移除元素的方式 * @author:godtrue * @crea ...
- Java中return的语句
1.return语句的作用:a.返回一个值,这个值可以是任意类型.b.使程序返回到操作系统(即终止程序)2.java中对于一个函数,不论有没有返回值类型,都可以带有return 语句.但是区别在于,r ...
- java.sql.Date赋值给了java.util.Date.转化成JSONArray时出错net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
net.sf.json.JSONException: java.lang.reflect.InvocationTargetExceptionat net.sf.json.JSONObject.defa ...
- 阿里巴巴Java开发手册建议创建HashMap时设置初始化容量,但是多少合适呢?
集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生. 关于HashMap,很多人都对他有一些基本的了解,比如他和hashtab ...
- 经典的java中return和finally问题!
经典的java中return和finally问题! 标签: 杂谈 分类: java学习 前一段时间 参加公司的笔试问了这个问题,回来一查才知道当时自己做错了,百思不得其解,上网查到下面的程序,但是运行 ...
- Java虚拟机 - 结构原理与运行时数据区域
http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关 ...
- Java byte类型转换成int类型时需要 & 0XFF的原因
Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...
- ceph rgw java sdk 使用域名访问服务时需要设置s3client的配置项 PathStyleAccess 为true, 负责将报域名异常
Caused by: java.net.UnknownHostException: my-new-bucket.s3.yyclouds.com at java.net.InetAddress.getA ...
随机推荐
- 用代码触发testng实现并发测试
有时候希望测试用例能用代码触发,发现testng支持这种操作,于是记录一下: 首先添加testng依赖: <dependency> <groupId>org.testng< ...
- String、StringBuffer、StringBulider的区别
1.线程安全性: 线程安全:String.StringBuffer 线程不安全:StringBulider 2.执行效率 StringBulider最快,Stringbuffer次之,String最差 ...
- PopupWindow弹出框
使用PopupWindow实现一个悬浮框,悬浮在Activity之上,显示位置可以指定 首先创建pop_window.xml: <?xml version="1.0" enc ...
- 47 (OC)* OC反射机制
Objective-C反射机制:是类似于Java的反射机制,这种动态机制可以让oc语言更加的灵活.这句话是对oc反射机制的初步认识,不过具体的怎么类似于java机制,怎么让oc更加的灵活,还得看下面的 ...
- Java 集合转换(数组、List、Set、Map相互转换)
package com.example.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Hash ...
- 大白话讲解 BitSet
原理 BitSet是位操作的对象,值只有0或1即false和true,内部维护了一个long数组,初始只有一个long,所以BitSet最小的size是64,当随着存储的元素越来越多,BitSet内部 ...
- Windows(Win7)搭建RabbitMQ服务器
首先安装Erlang环境,RabbitMQ的运行依赖于Erlang.可以在官网链接http://www.erlang.org/downloads 页面找到对应的开发环境安装包.例如64位Windows ...
- Mysql - 关于relay_log_recovery参数的测试
一.概述 官方文档中对relay_log_recovery参数的解释 Enables automatic relay log recovery immediately following server ...
- 理解JavaScript中的this关键字
JavaScript中this关键字理解 在爬虫的过程中遇到了前端的js代码,对于this关键字理解的不是很清楚,所以写下这篇笔记,不足之处,希望得以改之. this的指向在函数定义的时候无法确定,只 ...
- mysql修改数据库的存储引擎(InnoDB)
查看当前的存储引擎 show engines; 基本的差别:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不 ...