黑马程序员技术交流社区

标题: 小问题,求解释 [打印本页]

作者: 张雪萍    时间: 2013-4-7 12:45
标题: 小问题,求解释
本帖最后由 张雪萍 于 2013-4-8 20:35 编辑
  1. import java.io.*;
  2. class  FileWriterDemo8
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 FileWriter fw=null;//在外边建立引用,在try内初始化,这样fw就可以应用于全局
  7.                 try
  8.                 {
  9.                  fw=new FileWriter("demo.txt");
  10.                 fw.writer("abcdef");

  11.                 }
  12.                 catch (IOException e)
  13.                 {
  14.                         System.out.println(e.toString());
  15.                 }
  16.                 finally
  17.                 {
  18.                 fw.close();
  19.                 }
  20.                
  21.         }
  22. }
复制代码
在try外边建立引用并初始化与在try外部建立引用在内部初始化有什么区别吗吗?
作者: 邵震    时间: 2013-4-7 12:52
今天斑马休息吗?  怎么白天就开始加分了
作者: 我手心里的宝    时间: 2013-4-7 13:01
在try里面建立对象,就是在一个局部建立对象,只能在try代码块里使用
如果在外部访问,就会报错
在你这段代码里,因为需要关闭资源,所以建立对象,在外部建立了 ,如果你不在外部建立,你的fw.close()就会出现异常
记住就可以了:try代码块建立对象就相当于一个方法中建立对象
引用只能在本身里面调用
作者: 王大斌    时间: 2013-4-7 13:02
在try外部建立引用是为了try内部和finally块中使用这个引用
如果你在try内部建立引用,则在finally中无法使用这个引用。
当然,在内部初始化是必须的,因为你要创建的对象要抛出必检异常才导致你使用try 在外部初始化没有意义了
作者: 何俊森    时间: 2013-4-7 13:07
没有什么区别吧,  fw=new FileWriter("demo.txt");会抛异常所以要try..catch 啊。放try外怎么行?除非throws Exception
作者: 林声荣    时间: 2013-4-7 13:23
我觉得应该有点区别吧,在初始化过程中要抛IO异常、、、、
作者: 焦晨光    时间: 2013-4-7 13:24
没有区别,纯粹是为了方便引用
这句代码fw=new FileWriter("demo.txt");需要try catch
把fw的声明放在try外面,纯粹是为了引用
如果把fw的声明放在try里面,finally中就无法引用fw了,所以要把fw的声明放在try外面
作者: 黄玉昆    时间: 2013-4-7 19:00
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
作者: 张雪萍    时间: 2013-4-8 20:32
我手心里的宝 发表于 2013-4-7 13:01
在try里面建立对象,就是在一个局部建立对象,只能在try代码块里使用
如果在外部访问,就会报错
在你这段代 ...

是是是。。。
作者: 张雪萍    时间: 2013-4-8 20:32
王大斌 发表于 2013-4-7 13:02
在try外部建立引用是为了try内部和finally块中使用这个引用
如果你在try内部建立引用,则在finally中无法使 ...

谢了,知道了
作者: 张雪萍    时间: 2013-4-8 20:33
何俊森 发表于 2013-4-7 13:07
没有什么区别吧,  fw=new FileWriter("demo.txt");会抛异常所以要try..catch 啊。放try外怎么行?除非thro ...

有区别,看楼上,这是关于局部变量的
作者: 张雪萍    时间: 2013-4-8 20:34
林声荣 发表于 2013-4-7 13:23
我觉得应该有点区别吧,在初始化过程中要抛IO异常、、、、

看最前边的解释,
作者: 张雪萍    时间: 2013-4-8 20:34
焦晨光 发表于 2013-4-7 13:24
没有区别,纯粹是为了方便引用
这句代码fw=new FileWriter("demo.txt");需要try catch
把fw的声明放在try ...

有区别,看最上边的解释
作者: 贺靖轩    时间: 2013-4-9 12:51
初始化不同,赋空虽然麻烦,但好在清晰。 写里面也成,只是变成了局部变量,作用域会有所不同。




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