簡體   English   中英

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

[英]Why can't I use the print() or println() method in java.io.PrintStream as it is after importing the class?

為這個愚蠢的問題道歉,但在我學習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...);

我試着看看我是否可以導入java.io.PrintStream並使用print()println() ,而不是System.out.println()

import java.io.PrintStream;
println('a');

它出現了一個編譯錯誤說

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)

為什么我不能在導入java.io.Printstream之后使用println()

因為printlnPrintStream類的實例方法,所以您需要一個類的實例來調用實例方法。

但是, System.outPrintStream一個實例,因此您可以執行以下操作:

 System.out.println("blah blah")

或者您可以創建一個新的PrintStream實例,例如寫入文件:

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

Java教程中的這一部分可能會有所幫助: 課程:類和對象

您需要一個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

在Java中您總是需要在特定對象上調用方法(函數)。 這就是為什么如果要調用這些方法中的任何一個(print,println),首先需要創建java.io.PrintStream類型的對象。

例如,嘗試以下代碼:

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

它創建PrintStream對象,該對象打印到cosole並在那里打印給定的char參數。

您必須實例化PrintStream類,但它沒有默認的無參數構造函數。
因此,從System類中使用其靜態實例並直接調用print()方法是一種簡單的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM