[英]why java.io.PrintStream is not needed in System.out.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()
?
因為println
是PrintStream
類的實例方法,所以您需要一個類的實例來調用實例方法。
但是, System.out
是PrintStream
一個實例,因此您可以執行以下操作:
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.