黑马程序员技术交流社区

标题: fiinally输出值不是不变吗? [打印本页]

作者: ztwztw    时间: 2013-11-26 10:49
标题: fiinally输出值不是不变吗?
在毕老师的10-06中,第20题,
finally
{
outoup+="3";
}
outoup+="4";
最后输出
system.out.println(outoup);最后输出的是4

作者: RuntimeError!    时间: 2013-11-26 10:59
final是定义常量的,finally是在try catch中无论如何也要执行的一块  楼楼不要弄混淆了哇~~
作者: ixiangfeng    时间: 2013-11-26 11:00
麻烦搞清楚final和finally
作者: 王雷1    时间: 2013-11-26 11:28
finally主要应用在异常上,他的意思是说不管前面是否正常,这里都要要被执行到得地方,但有一种情况是执行不到的,执行到System.exit(0);finally不会执行。
而你写的东西里outoup赋值成功与否都不重要了,因为你后面又在一次的赋值,它是字符串,第一次指向了字符池中的字符串3,后一次又指向了字符池中的4,你只是改变的outoup的指向而已。
作者: 邓伟    时间: 2013-11-26 11:33
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 try
  6.                 {
  7.                         System.out.println("try 代码块");
  8.                 }
  9.                 catch (Exception e)
  10.                 {
  11.                         System.out.println("catch 代码块");
  12.                 }
  13.                 finally
  14.                 {
  15.                         System.out.println("finally 代码块");
  16.                 }
  17.                 System.out.println("是否最后执行");
  18.         }
  19. }
复制代码

你可以看到最,执行顺序是 try 代码块, finally代码块.最后才是是否最后执行 这三句话.
然而你的程序在try中并没有发生Exception 异常,所以不会执行catch 代码块这句话,
同时,最后赋值的值是4 也就是outoup+="4"; 这段语句..

不知道对不对,新手回答..大家一起探讨
作者: 木木赤赤    时间: 2013-11-26 11:34
finally后的{}里的语句代表的是一定执行的语句
final用于定义常量的
两者不能混为一谈。
仔细观看老师的视频,里面有详细的解释的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2