# Class IO

java.lang.Object
java.lang.IO

public final class IO extends Object
A collection of static methods that provide convenient access to `System.in` and `System.out` for line-oriented input and output.

The `readln()` and `readln(String)` methods decode bytes read from `System.in` into characters. The charset used for decoding is specified by the `stdin.encoding` property. If this property is not present, or if the charset it names cannot be loaded, then UTF-8 is used instead. Decoding always replaces malformed and unmappable byte sequences with the charset's default replacement string.

Charset decoding is set up upon the first call to one of the `readln` methods. Decoding may buffer additional bytes beyond those that have been decoded to characters returned to the application. After the first call to one of the `readln` methods, any subsequent use of `System.in` results in unspecified behavior.

API Note:
  The expected use case is that certain applications will use only the `readln` methods to read from the standard input, and they will not mix these calls with other techniques for reading from `System.in`.
Since:
  25

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static void`
  `print(Object obj)`
  Writes a string representation of the specified object to the standard output.
  `static void`
  `println()`
  Writes a line separator to the standard output.
  `static void`
  `println(Object obj)`
  Writes a string representation of the specified object and then writes a line separator to the standard output.
  `static String`
  `readln()`
  Reads a single line of text from the standard input.
  `static String`
  `readln(String prompt)`
  Writes a prompt and then reads a line of input.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Method Details

  - ### println

    public static void println(Object obj)
    Writes a string representation of the specified object and then writes a line separator to the standard output.

    The effect is as if `println(obj)` had been called on `System.out`.

    Parameters:
      `obj` - the object to print, may be `null`

  - ### println

    public static void println()
    Writes a line separator to the standard output.

    The effect is as if `println()` had been called on `System.out`.

  - ### print

    public static void print(Object obj)
    Writes a string representation of the specified object to the standard output.

    The effect is as if `print(obj)` had been called on `System.out`.

    Parameters:
      `obj` - the object to print, may be `null`

  - ### readln

    public static String readln()
    Reads a single line of text from the standard input.

    One line is read from the decoded input as if by `BufferedReader.readLine()` and then the result is returned.

    If necessary, this method first sets up charset decoding, as described in above in the class specification.

    Returns:
      a string containing the line read from the standard input, not including any line separator characters. Returns `null` if an end of stream has been reached without having read any characters.
    Throws:
      `IOError` - if an I/O error occurs

  - ### readln

    public static String readln(String prompt)
    Writes a prompt and then reads a line of input.

    Writes a prompt as if by calling `print`, and then reads a single line of text as if by calling `readln`.

    If necessary, this method first sets up charset decoding, as described in above in the class specification.

    Parameters:
      `prompt` - the prompt string, may be `null`
    Returns:
      a string containing the line read from the standard input, not including any line separator characters. Returns `null` if an end of stream has been reached without having read any characters.
    Throws:
      `IOError` - if an I/O error occurs