为什么我不能在java.io.PrintStream中使用print()或println()方法,因为它是在导入类之后?

时间:2015-10-30 08:50:27

标签: java

为这个愚蠢的问题道歉,但在我学习java课程时,我尝试了以下

javap -c java.lang.System | grep -i out
  public static final java.io.PrintStream out;

javap java.io.PrintStream | grep print
public void print(boolean);
public void print(char);
public void print(int);
public void print(long);
public void print(float);
public void print(double);
public void print(char[]);
public void print(java.lang.String);
public void print(java.lang.Object);
public void println();
public void println(boolean);
public void println(char);
public void println(int);
public void println(long);
public void println(float);
public void println(double);
public void println(char[]);
public void println(java.lang.String);
public void println(java.lang.Object);
public java.io.PrintStream printf(java.lang.String, java.lang.Object...);
public java.io.PrintStream printf(java.util.Locale, java.lang.String, java.lang.Object...);

我尝试查看是否可以导入<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="c1"> <h2>here<span class="span1">X</span></h2> </div>并按原样使用java.io.PrintStreamprint(),而不是println()

System.out.println()

出现了编译错误

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method print(char) is undefined for the type array
    at array.main(array.java:16)

为什么导入import java.io.PrintStream; println('a'); 后我不能使用println()

4 个答案:

答案 0 :(得分:8)

因为printlnPrintStream类的实例方法,并且您需要一个类的实例来调用实例方法。

但是,System.outPrintStream的一个实例,因此您可以这样做:

 System.out.println("blah blah")

或者您可以创建一个新的PrintStream实例,例如写入文件:

 PrintStream p = new PrintStream(filename);
 p.println("blah blah");

Java教程中的这一部分可能会有所帮助:Lesson: Classes and Objects

答案 1 :(得分:1)

您需要一个PrintStream实例,因为println不是静态的。

你可以试试这个:

import java.io.PrintStream;
PrintStream printStream = new PrintStream(System.out);
// or better
PrintStream printStream = System.out;
printStream.println('a');

PrintStream需要构造函数的OutputStream,你可以给你想要的OutputStream:

ByteArrayOutputStream, FileOutputStream中, FilterOutputStream中, ObjectOutputStream中, OutputStream的, 的PipedOutputStream

Javadoc: OutputStream PrintStream

答案 2 :(得分:0)

在Java中您总是需要在特定对象上调用方法(函数)。 这就是为什么如果要调用这些方法中的任何一个(print,println),首先需要创建java.io.PrintStream类型的对象。

例如,请尝试以下代码:

import java.io.PrintStream;
...
PrintStream ps = System.out;
ps.print('a');

它创建PrintStream对象,该对象打印到cosole并在那里打印给定的char参数。

答案 3 :(得分:0)

您将不得不实例化PrintStream类,但是它没有默认的无参数构造函数。
因此,这是使用System类中的静态实例并直接调用print()方法的简便方法。