java中return的用法

public class Demo {
public static void main(String[] args) {

System.out.println(test());
}
public static int test(){
int i=0;
try {
i++;
return i;
} catch (Exception e) {
e.printStackTrace();//打印信息

}finally{
i++;

}
return i;
}
}
为什么输出1?

java中return的作用如下:

根据《Java编程思想:第四版》4.5节中介绍:return语句作为一个无条件的分支,无需判断条件即可发生。return语句主要有两个用途:一方面用来表示一个方法返回的值(假定没有void返回值),另一方面是指它导致该方法退出,并返回那个值。

根据方法的定义,每一个方法都有返回类型,该类型可以是基本类型,也可以是对象类型,同时每个方法都必须有个结束标志,因此,return起到了这个作用。在返回类型为void的方法里面,有个隐含的return语句,因此,在void方法里面可以省略不写。

拓展资料:

一、return语句和其他控制结束语句的区别如下:

Java中结束语句主要有四类:return,break,continue以及goto。但是goto不常用,所有此文不对此讨论。

1、return语句:是指结束该方法,继续执行方法后的语句。

2、break语句:是指在循环中直接退出循环语句(for,while,do-while,foreach),break之后的循环体里面的语句也执行。

3、continue语句:是指在循环中中断该次循环语句(for,while,do-while,foreach),本次循环体中的continue之后语句不执行,直接跳到下次循环。

二、return在try-catch-finally语句中的使用,若在 try或catch语句里面有return语句,finally语句和return语句的执行顺序问题:

1、若有finally语句,则无论如何,都会执行该语句,在try或catch中的return语句会将它的返回值压入栈内,然后执行finally语句,当finally执行完成后,若finally语句里有return语句,则执行return语句并结束。

2、若finally没有return语句,则返回被保存的栈里的return语句,再执行。然而,在压栈时候,要注意压入栈内的是什么东西,是值本身还是引用,若是引用则引用的值会改变,若是变量值,则不会改变。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-21
这个涉及到了jvm的实现机制.在try中遇到return前,i的值是1,这时在变量i中是1,并且把1这个值复制放入到了准备输出的栈顶,这时到finally,在这里对于变量i进行了加1,但是在栈顶的值却没有变,所以return的就是1了
第2个回答  2011-11-21
哈哈 你这个题非常有意思。

因为你在定义一个int i=0;
所以当你
try {
i++;
return i;
}
执行到这里 它return了 所以 i又等于0了,然后它就在finnally里加1了。
你把 return i; 这个注释掉就可以得到你喜欢的2了。
//先输出2 然后输出1
public static int test()
{
int i = 0;
try
{
i++;
return i;
}
catch (Exception e)
{
//e.Message;//打印信息
}
finally
{
i++;
Console.WriteLine("Finally:" + i);
}
return i;
}

//输出的都是2
public static int test()
{
int i = 0;
try
{
i++;
//return i;
}
catch (Exception e)
{
//e.Message;//打印信息
}
finally
{
i++;
Console.WriteLine("Finally:" + i);
}
return i;
}

有问题在讨论。
第3个回答  2011-11-21
因为它执行return i;时,它返回的是1,之后再改变i的值也没用
之后执行finally里的i++;虽然i是变成了2,但是和return 里的那个1没有关联
但是finally里语句确时执行了,你在finally里加一个输出语句 ,输出一个不
你就会看见i的确变成2了本回答被提问者采纳
第4个回答  2018-07-04
Java中的return语句总是和方法有密切关系,return语句总是用在方法中,有两个作用,一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句)。
return语句用在非void返回值类型的方法中,不但能返回基本类型,还可以返回(包括用户自定义类的)对象。
return可以写在方法的任意位置,但必须保证满足几个条件:

1:每个有返回值的方法中每条路径都有return

2 :return后不应有代码,因此此处代码不会被执行
3:在try-catch-finally结构中finally先于return执行

4:只有一种情况return不执行,即代码中包含System.exit(1);本回答被网友采纳
相似回答