回 帖 发 新 帖 刷新版面

主题:[求助] java变量初始化的问题

import java.io.*;
public class TestPrintStream1 {
  public static void main(String[] args) {
    FileOutputStream fos ;
    try {
      fos = new FileOutputStream("C:/PS1.txt"); //A

    } catch (IOException e) {
      e.printStackTrace();
    }
    PrintStream ps = new PrintStream(fos); //B
    if(ps != null) {
      System.setOut(ps);
    }
    System.out.println("haha");
  }
}

无法通过编译,说B句在使用fos时未对fos进行初始化,可A句已经初始化了呀?为什么说fos变量没有初始化?(我知道只要在开头令fos=null;就可以了,但是就是想不通,A句也初始化了,为什么B句就不能通过编译)

回复列表 (共6个回复)

沙发

我以前也做过这样的,好像是因为在A句中如果出现异常,就不能够成功初始化,所以编译能不过

板凳


fos = new FileOutputStream("C:[b]/[/b]PS1.txt");
文件路径是不是有问题   "C:[b]\\[/b]PS1.txt"

3 楼

A句可能会有异常,因而可能不能初始化。但这个异常一般是不存在的,可以写成FileOutputStream fos=null ;欺骗编译器。

4 楼


怎么类名不统一呢 

5 楼

Put all code into try block.

6 楼

明白了,异常里的付值不算数。呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册