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