java中的finally用return也挡不住】的更多相关文章

今晚做了科达的题,有一题就是这个意思,我自以为return中断一切,然而事实摆在眼前:…
根据个人亲自测试,得出如下结果: 1.try,catch中有没有return,finnally都会执行,而且是先执行try,catch后,最后执行finnally语句: 2.如果finnally中有return,那么会直接返回,不会再去返回try或者catch中的返回值: 3.finally中对于返回变量做的改变不会影响try.catch中返回的结果. 参考地址:https://blog.csdn.net/jdfk423/article/details/80406297…
finally代码块的语句在return之前一定会得到执行 如果try块中有return语句,finally代码块没有return语句,那么try块中的return语句在返回之前会先将要返回的值保存,之后执行finally代码块,最后将保存的返回值返回,finally代码块虽然对返回值进行修改也不影响返回值,因为要返回的值在执行finally代码块之前已经保存了,最终返回的是保存的旧值(值传递). 如果try块和finally块都有返回语句,那么虽然try块中返回值在执行finally代码块之前…
break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即,不是跳到下一个循环周期而是退出循环.如果break语句包含在嵌套循环里,它只跳出最里面的循环. 如下代码: public class Test { public static void main(String[] args) { for(int i=0; i<10; i++){ if(i==5){ break; } System.out.print(i+" "); } } } 可以看到程…
项目中一个消息推送需求,推送的用户数几百万,用户清单很简单就是一个txt文件,是由hadoop计算出来的.格式大概如下: uid caller 123456 12345678901 789101 12345678901 …… 现在要做的就是读取文件中的每一个用户然后给他推消息,具体的逻辑可能要复杂点,但今天关心的是如何遍历文件返回用户信息的问题. 之前用C#已经写过类似的代码,大致如下: /// <summary> /// 读取用户清单列表,返回用户信息. /// </summary&g…
Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因.下面来看这几种情况. 情况一(try中有return,finally中没有return): public class TryTest{ public static void main(String…
可不能小看这个简单的 finally,看似简单的问题背后,却隐藏了无数的玄机.接下来我就带您一步一步的揭开这个 finally 的神秘面纱. 问题分析 首先来问大家一个问题:finally 语句块一定会执行吗? 很多人都认为 finally 语句块是肯定要执行的,其中也包括一些很有经验的 Java 程序员.可惜并不像大多人所认为的那样,对于这个问题,答案当然是否定的,我们先来看下面这个例子. 清单 1. public class Test { public static void main(St…
Java中,执行try-catch-finally语句需要注意: 第一:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回) 第二:finally里面不建议放return语句,根据需要,return语句可以放在try和catch里面和函数的最后.可行的做法有四种: 1)return语句只在方法最后出现一次. 2)return语句仅在try和catch里面都出现. 3)retur…
跳转控制语句 Java中的goto是保留字,目前不能使用.虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情.为了弥补这个缺陷,Java就提供了break,continue和return来实现控制语句的跳转和中断. break 中断 continue 继续 return 返回 break的使用场景: 在选择结构switch语句中 在循环语句中 离开使用场景的存在是没有意义的 break的作用: 跳出单层循环 跳出多层…
经典的java中return和finally问题! 标签: 杂谈 分类: java学习 前一段时间 参加公司的笔试问了这个问题,回来一查才知道当时自己做错了,百思不得其解,上网查到下面的程序,但是运行后发现了错误,我修改后放在了我的blog 上面,希望和大家分享. 经典的java中return和finally问题!   代码如下: public class Test { public static void main(String[] args) { System.out.print(tt())…
如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用,其他几种修饰符的使用在后面章节中会详细讲解滴 2. 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void :如果方法具有返回值,则需要指定返回值的类型,并且在…
代码1测试 public static void main(String[] args) { aa(); } static int aa() { try { int a=4/0; } catch (Exception e) { e.printStackTrace(); return 1; }finally{ System.out.println("finally"); // return 2; return写在这里不规范,不是错误,但有感叹号 } return 2; } 输出结果如下:…
原文:http://kingj.iteye.com/blog/1436761 在Java中当try.finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,现在通过下面的例子加以说明: 第一种情况:try中包含return语句,finally中不包含 public class TestTry { static String s=""; public static void main(…
问题分析  首先来问大家一个问题:finally 语句块一定会执行吗? 很多人都认为 finally 语句块是肯定要执行的,其中也包括一些很有经验的 Java 程序员.可惜并不像大多人所认为的那样,对于这个问题,答案当然是否定的,我们先来看下面这个例子.清单 1. public class Test { public static void main(String[] args) { System.out .println("return value of test(): " + te…
1.return语句的作用:a.返回一个值,这个值可以是任意类型.b.使程序返回到操作系统(即终止程序)2.java中对于一个函数,不论有没有返回值类型,都可以带有return 语句.但是区别在于,return 语句是否可以返回一个值(这取决与该函数的返回值类型). a.如果函数有返回值类型(即返回值类型不为void ),则必须带有返回相应类型值的return 语句.b.如果函数没有返回值(即返回值类型为void ),则函数中return 语句(如果存在return语句!)的后面不能加任何的变量…
Java中的return语句总是和方法有密切关系,return语句总是用在方法中,有两个作用,一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句).   在return语句的各类文章中,大多仅仅介绍了return语句用于有返回值(非void返回值)的方法中.而很少或没有介绍return语句在vodi返回值方法中的运用.   return语句用在非void返回值类型的方法中,不但能返回基本类型,还可以返回(包括用户自定义类的)对象.   下面通过一个简单…
java中,return和return null有什么区别吗? 最大的区别:return;方法的返回值必须是void!return null;方法的返回值必须不是 原始数据类型(封装类除过)和void! return 就是跳出方法...return null也是跳出方法并返回null.. 也就是说return null必须用在返回值不是void的方法里面..return可以用在任何方法里面 不要认为null就是没有值..null就是值..真正的没有值是..比如你String s;这个时候s是没有…
Java中关键字continue.break和return的区别: continue:跳出本次循环继续下一次循环 break:   跳出循环体,继续执行循环外的函数体 return:   跳出整个函数体,函数体后面的部分不再执行 public static void main(String[] args) { for(int i =1;i<=100;i++){ if(i==47){ continue; //break; //return } System.out.println("i=&q…
Java中return的两个作用:   (1)返回方法指定类型的值(这个值总是确定的),也可以是对象   (2)方法的结束…
在Java中返回值定义为int类型的 方法return 1:中返回的是Integer值,在返回的时候基本类型值1被封装为Integer类型. 定义一个Test类,在异常处理try中和finally中分别return : public class Test { public static void main(String[] args) { System.out.println(new Test().test()); } int test() { try { return func1(); }fi…
java中break.continue.return作用 0.首先要明确:break和continue是作用对象是循环体:而return的作用对象是方法 break:在执行完本次循环后,跳出所在的循环体,执行循环体以后的代码: continue:这次循环到此为止,继续下次循环: return: 结束整个方法: 返回一个指定类型的确定值,结束整个方法:…
finally块里面的代码一般都是会执行的,除非执行 System.exit(int),停止虚拟机,断电. 1.若try代码块里面有return ,假设要return 的值 是A,A为基本类型或者被final修饰的不可变类型(如:基本类型的包装类型Integer,Double,String ),并且finally语句块里面 对try语句块里面要return 的值A做了修改 比如A+1,但是最终返回的值是不受finally里面对A值操作的影响的.看下面的示例: 1.1范围值为基本类型 public…
1. 最简单的情形 public void main(){ String s = test(); System.out.println("s=[" + s + "]"); } public String test(){ String s = ""; try{ System.out.println("In try"); s += "try," ; }catch(Exception ex){ System.ou…
finally块里面的代码一般都是会执行的,除非执行 System.exit(int),停止虚拟机,断电. 1.若try代码块里面有return ,假设要return 的值 是A,A为基本类型或者被final修饰的不可变类型(如:基本类型的包装类型Integer,Double,String ),并且finally语句块里面 对try语句块里面要return 的值A做了修改 比如A+1,但是最终返回的值是不受finally里面对A值操作的影响的.看下面的示例: 1.1范围值为基本类型 public…
finally 语句块中, 最好不要使用return, 否则会造成已下后果; 1, 如果catch块中捕获了异常, 并且在catch块中将该异常throw给上级调用者进行处理, 但finally中return了, 那么catch块中的throw就失效了, 上级方法调用者是捕获不到异常的. 见demo如下: public class TestException { public TestException() { } boolean testEx() throws Exception { bool…
前言:try-catch-finally带return和异常时,它们之间执行顺序问题是留下来的一个小疑问,今天搞清楚它们 第一种情况:无异常 //1.try-catch-finally都带有return public static int method_1(){ int num = 1; try { System.out.println("---try run---"); return ++num; } catch (Exception e) { System.out.println(…
勿在流沙筑高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 作为Java程序员,Java 的数据类型这个是一定要知道的! 但是不管是那种数据类型最终存储都要到内存中,本文由浅入深对数据类型进行介绍和讲解,相信读完本文你一定会有收获的,会对Java数据类型有更深的了解和认识! 本文地图 一.什么是位.字节.字符.字符集 位(bit):计算机内部存储数据的最小单位,音译为比特,每个二进制数字0或者1就是1个位! 字节(Byte):计算机存储容量(…
大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工程师精心设计的艺术品!艺术品易碎!用final就是拒绝继承,防止世界被熊孩子破坏,维护世界和平! 1. 什么是不可变? String不可变很简单,如下图,给一个已有字符串"abcd"第二次赋值成"abcedl",不是在原内存地址上修改数据,而是重新指向一个新对象,新地址…
更多精彩原创内容请关注:JavaInterview,欢迎 star,支持鼓励以下作者,万分感谢. 锁的分类介绍 乐观锁与悲观锁 锁的一种宏观分类是乐观锁与悲观锁.乐观锁与悲观锁并不是特定的指哪个锁(Java 中也没有那个具体锁的实现名就叫 乐观锁或悲观锁),而是在并发情况下两种不同的策略. 乐观锁(Optimistic Lock)就是很乐观,每次去拿数据的时候都认为别人不会修改.所以不会上锁.但是如果想要更新数据, 则会在更新之前检查在读取至更新这段时间别人有没有修改过这个数据.如果修改过,则重…
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 一.初识String类 首先JDK API的介绍: public final class String extends Object implements Serializable, Comparable<String>, CharSequence String类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量:它们的值在创建之后不能更改.字符…