Is there a difference in using these two? When would you use one over the other?
System.out.println(result);
versus
PrintWriter out = new PrintWriter(System.out);
out.println(result);
out.flush();
By using PrintWriter than using System. out. println is preferred when we have to print a lot of items as PrintWriter is faster than the other to print data to the console.
The only difference between println and print method is that println throws the cursor to the next line after printing the desired result whereas print method keeps the cursor on the same line.
The println(String) method of PrintWriter Class in Java is used to print the specified String on the stream and then break the line. This String is taken as a parameter. Syntax: public void println(String string)
The main reason to use the PrintWriter is to get access to the printXXX methods (like println(int)). You can essentially use a PrintWriter to write to a file just like you would use System. out to write to the console.
I recommend using PrintWriter if you have to print more than 10^3 lines in one go.
I got this by running these snippets 3 times each for n=10^1 to 10^7 and then taking mean of there execution time.
class Sprint{
public static void main(String[] args) {
int n=10000000;
for(int i=0;i<n;i++){
System.out.println(i);
}
}
}
import java.io.*;
class Pprint{
public static void main(String[] args) {
PrintWriter out = new PrintWriter(System.out);
int n=10000000;
for(int i=0;i<n;i++){
out.println(i);
}
out.flush();
}
}
The main difference is that System.out
is a PrintStream
and the other one is a PrintWriter
. Essentially, PrintStream
should be used to write a stream of bytes, while PrintWriter
should be used to write a stream of characters (and thus it deals with character encodings and such).
For most use cases, there is no difference.
System.out
is instance of PrintStream
So your question narrows down to PrintStream
vs PrintWriter
All characters printed by a PrintStream
are converted into bytes using the platform's default character encoding. (Syso writes out directly to system output/console)
The PrintWriter
class should be used in situations that require writing characters rather than bytes.
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