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

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 check if I can import java.io.PrintStreamand use print()or println()as is, instead System.out.println().

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

And it turned out with a compilation 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 not I use println(), as it was after import java.io.PrintStream?

+4
source share
3 answers

println - PrintStream, .

System.out PrintStream, :

 System.out.println("blah blah")

PrintStream, , :

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

Java : :

+7

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

: OutputStream PrintStream

+1

In Java, you always need to call a method (function) for a specific object. Therefore, if you want to call any of these methods (print, println), you first need to create an object of type java.io.PrintStream.

For example, try the following code:

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

It creates a PrintStream object that prints on a skew and prints the given char argument.

0
source

Source: https://habr.com/ru/post/1613800/


All Articles