java: cry-catch-finally 应用问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java: cry-catch-finally 应用问题。相关的知识,希望对你有一定的参考价值。

如图:不是先执行了try里面的return右边的++x,之后进入到finally里面又执行了一次++x吗?我认为最后结果应该是3的。可是在eclipse里面的运行结果却是2;何解?谁能详细的解说一下。

程序在执行完try里面return后的++x之后,会把语句的结果新开辟一内存空间,直接把结果存放此内存空间中。所以,finally中的值不会影响try中即将return的结果,此情况同样适用于catch语句。若把return放在finally中(如下),返回的结果就是3了

pulic int aaa()
    int x=1;
    try 
++x;
     catch (Exception e) 
    finally
x++;
return x;
    

public static void main(String[] args) 
    Test t=new Test();
    int y=t.aaa();
    System.out.println(y);

参考技术A 例子:package com.my.test;

public class ReturnTest

/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
System.out.println("testRetrun:"+testRetrun());
System.out.println("testRetrun:"+testRetrun2());
System.out.println("testRetrun2:"+testRetrun3().getA());
// try a:1
// try a:3
// testRetrun:3
// try a:1
// try a:3
// testRetrun:2
// try a:1
// try a:3
// testRetrun2:3


@SuppressWarnings("finally")
public static int testRetrun()
int a=1;
try
System.out.println("try a:"+a);
return ++a;
catch(Exception e)
// return ++a;
System.out.println("try a:"+a);
finally
++a;
System.out.println("try a:"+a);
return a;



@SuppressWarnings("finally")
public static int testRetrun2()
int a=1;
try
System.out.println("try a:"+a);
return ++a;
catch(Exception e)
// return ++a;
System.out.println("try a:"+a);
finally
++a;
System.out.println("try a:"+a);
// return a;

return a;


public static Entity testRetrun3()
Entity entiy=new Entity();
entiy.setA(1);
try
System.out.println("try a:"+entiy.getA());
entiy.setA(2);
return entiy;
catch(Exception e)
// return ++a;
System.out.println("try a:"+entiy.getA());
finally
entiy.setA(3);
System.out.println("try a:"+entiy.getA());

entiy.setA(4);
return entiy;




class Entity
private int a;

public int getA()
return a;


public void setA(int a)
this.a = a;

参考技术B int x =1 return ++x 就是2 没有错呀

Java程序员面试时应注意的三个经典问题!

近年来我国信息化发展越来越快,使得国内各地的信息化建设如火如荼,出现了大量的信息化人才,尤其是Java软件人才的缺口。而我国信息化人才培养还处于发展阶段,导致社会实际需求人才基数远远大于信息化人才的培养基数,使得数以万计的中小企业急需全面系统掌握Java软件开发基础技能与知识的软件工程师。

因此越来越多的人开始进入Java行业。但很多Java程序员在面试时,通常会遇到以下几个问题(几个比较经典的)!下面,跟着小千一起来看看具体是哪几个问题吧!

1、自我感觉自己的Java的技术不错,但是面试往往不如人意;

2、对面试官提出的问题很懵,不知道它问的是什么?

3、面试才开始,有些面试官就疯狂地从知识基础的开始询问;

4、一些面试官一直在问有关业务场景的问题,完全不知道面试前要准备什么。

面试(无论是为了找工作还是升职)是我们每个人都无法逃避的事情。有时候,与其一味写代码,不如提升一下自己的面试技巧。小千特意搜集了很多信息,整理,现在分享给大家!

1、Java的基本知识很重要。

能否熟练掌握Java基础知识,是一项被许多大公司高度重视的基本能力,但总有人追求高深的技术,而忽略它。如果您的底层知识扎实,一套完整的框架知识,这将会为您未来所有的面试打下坚实的基础。

2、不要答非所问,明确面试提问的意图

面试官针对不同的Java岗位要求,对能力考察的重点有些差异!

如果你是参加校招,会重点看到你的基本知识,逻辑思维,更多以挖掘潜力为主;

如果你是初级Java工程师,你需要注重基本知识的应用和自身掌握知识的广度;

对于资深或高级Java工程师来说,更需要对基本原理有深刻的理解,并且能够灵活地使用各种知识,一般以综合能力为主。

3、了解Java应用能力考察点和加分项

不同类型的公司对候选人的能力需要而不同。对于社交门户,Java工程师的考察知识是大规模和高并发场景的应用和体系结构能力。

O2O行业将重点放在对求职者综合能力的考察;

互金更喜欢具有缜密的逻辑思维和在高可用性安全领域经验丰富的候选人。

因此,为了提高面试合格率,达到事半功倍的效果,面试前应根据公司类型和岗位要求进行特殊准备。

综合以上小千分享的这三个维度准备面试,通过率就会大大提高。但是,如果你真的想轻松地应对面试,还需要和大工厂的面试官进行沟通交流,了解更多关于面试的核心技能。这样,您就能更好地了解自己的弱点,清晰考察的要点。

面试是一个交流的过程,千万不能生搬硬套,要根据具体情况分析,提出合适的问题,比如从公司工作,团队,客户等工作相关的内容提出问题,那么就不会有太多的错误。

本文来自千锋教育,转载请注明出处。

以上是关于java: cry-catch-finally 应用问题。的主要内容,如果未能解决你的问题,请参考以下文章

java 反射使用 Class.getMethod 应注意

java - 如何在java中显示所有闰年B / W两年(最终用户应输入年份)

java 和 sql 显示 #1241 - 操作数应包含 1 列

应“云”而生的 Java 框架

应大家需要,Java常用开发工具汇总来了

通过IDEA制作包含Java应程序的Docker镜像