Apologies for this silly question, but while I was learning java classes, I tried the following
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...);
And I tried to see if I can import java.io.PrintStream
and use print()
or println()
as it is, instead of System.out.println()
.
import java.io.PrintStream;
println('a');
And it came out with a compile error saying
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)
Why can't I use println()
as it is after importing java.io.Printstream
?
Because println
is an instance method of the PrintStream
class, and you need an instance of a class to call instance methods.
However, System.out
is an instance of PrintStream
, so you can do:
System.out.println("blah blah")
or you can create a new PrintStream
instance, for example to write to a file:
PrintStream p = new PrintStream(filename);
p.println("blah blah");
This section in the Java Tutorial can be helpful: Lesson: Classes and Objects
You need an instance of PrintStream because println is not static.
You can try this:
import java.io.PrintStream;
PrintStream printStream = new PrintStream(System.out);
// or better
PrintStream printStream = System.out;
printStream.println('a');
PrintStream needs a OutputStream for the constructor, you can give the OutputStream you want:
ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream
Javadoc : OutputStream PrintStream
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With