A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张雪萍 中级黑马   /  2013-4-7 12:45  /  2419 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张雪萍 于 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外部建立引用在内部初始化有什么区别吗吗?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

13 个回复

倒序浏览
今天斑马休息吗?  怎么白天就开始加分了
回复 使用道具 举报
在try里面建立对象,就是在一个局部建立对象,只能在try代码块里使用
如果在外部访问,就会报错
在你这段代码里,因为需要关闭资源,所以建立对象,在外部建立了 ,如果你不在外部建立,你的fw.close()就会出现异常
记住就可以了:try代码块建立对象就相当于一个方法中建立对象
引用只能在本身里面调用

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
在try外部建立引用是为了try内部和finally块中使用这个引用
如果你在try内部建立引用,则在finally中无法使用这个引用。
当然,在内部初始化是必须的,因为你要创建的对象要抛出必检异常才导致你使用try 在外部初始化没有意义了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 鼓励鼓励

查看全部评分

回复 使用道具 举报
没有什么区别吧,  fw=new FileWriter("demo.txt");会抛异常所以要try..catch 啊。放try外怎么行?除非throws Exception
回复 使用道具 举报
我觉得应该有点区别吧,在初始化过程中要抛IO异常、、、、
回复 使用道具 举报
没有区别,纯粹是为了方便引用
这句代码fw=new FileWriter("demo.txt");需要try catch
把fw的声明放在try外面,纯粹是为了引用
如果把fw的声明放在try里面,finally中就无法引用fw了,所以要把fw的声明放在try外面
回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
我手心里的宝 发表于 2013-4-7 13:01
在try里面建立对象,就是在一个局部建立对象,只能在try代码块里使用
如果在外部访问,就会报错
在你这段代 ...

是是是。。。
回复 使用道具 举报
王大斌 发表于 2013-4-7 13:02
在try外部建立引用是为了try内部和finally块中使用这个引用
如果你在try内部建立引用,则在finally中无法使 ...

谢了,知道了
回复 使用道具 举报
何俊森 发表于 2013-4-7 13:07
没有什么区别吧,  fw=new FileWriter("demo.txt");会抛异常所以要try..catch 啊。放try外怎么行?除非thro ...

有区别,看楼上,这是关于局部变量的
回复 使用道具 举报
林声荣 发表于 2013-4-7 13:23
我觉得应该有点区别吧,在初始化过程中要抛IO异常、、、、

看最前边的解释,
回复 使用道具 举报
焦晨光 发表于 2013-4-7 13:24
没有区别,纯粹是为了方便引用
这句代码fw=new FileWriter("demo.txt");需要try catch
把fw的声明放在try ...

有区别,看最上边的解释
回复 使用道具 举报
初始化不同,赋空虽然麻烦,但好在清晰。 写里面也成,只是变成了局部变量,作用域会有所不同。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马