println的非静态替代品

时间:2012-12-18 20:20:33

标签: java static non-static

简单的问题是我可以使用其他函数而不是println,因为我想将非静态变量输出到文件usig out.println();

这是我的代码:

import java.io.*;

public class main {

String outputString ="Math.sqrt(25);" ;
static String outputPath ="src/output.txt";
/**
 * @param args
 */
public static void main(String[] args) throws IOException {
    File f;
    f= new File (outputPath);
        //file creation
        if(!f.exists()){
            f.createNewFile();
            System.out.println("File has been created");
        }else{
            f.delete();
            System.out.println("1. File has been deleted");
            f.createNewFile();
            System.out.println("2. File has been created");
        }
        //adding string(text) to file
        try{
            FileWriter outFile = new FileWriter(args[0]);
            PrintWriter out = new PrintWriter(outFile);

            out.println(outputString);
            out.close();

        }catch(IOException e){
                 e.printStackTrace();
            }
    }

}

如果这不可能,可能还有其他方法可以解决它。我的主要问题是我想在代码的和平中创建一个字符串。但这似乎很难做:)任何帮助:)

3 个答案:

答案 0 :(得分:7)

问题与println()无关。这与以下事实有关:非staticoutputString与您的类的实例相关联,而您的代码不会创建此类实例。

要么outputString为静态,要么创建main的实例:

public void doit(String[] args) throws IOException {
    ...
    PrintWriter out = ...;
    out.println(outputString);
    ...
}

public static void main(String[] args) throws IOException {
    new main().doit(args);
}

答案 1 :(得分:2)

println函数可以打印静态和非静态变量。问题是您尝试从静态上下文(您的outputString方法)中访问非静态变量main

答案 2 :(得分:1)

printlnPrintStream类的非静态方法。 System,也是一个类,有一个名为out的名为PrintStream的静态成员,您可以通过System.out调用来检索它。当java启动时,该成员被初始化。

请注意,这并不意味着除了Object类型的常规PrintStream之外的其他任何内容,只是它是一个可以从System静态方便地访问的单例。