# Input/Output (I/O)

In Java, there are several I/O (Input/Output) objects and classes that can be used to read user inputs. Here are some common I/O objects and a short description of each:

1. **Scanner:**
   * The `Scanner` class is a versatile and easy-to-use tool for reading user input from various sources, including the console and files.
   * It provides methods like `nextLine()`, `nextInt()`, and `nextDouble()` to read different types of data.
   * Example:

     ```java
     Scanner scanner = new Scanner(System.in);
     String name = scanner.nextLine();
     int age = scanner.nextInt();
     ```
2. **BufferedReader and InputStreamReader:**
   * The `BufferedReader` class, combined with `InputStreamReader`, is used for efficient reading of text-based data from the console.
   * It's commonly used when you need to read input line by line.
   * Example:

     ```java
     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
     String input = reader.readLine();
     ```
3. **Console:**
   * The `System.console()` method provides access to a console object, allowing you to read user input without creating additional I/O objects.
   * It's available in console-based Java applications, not in all environments.
   * Example:

     ```java
     Console console = System.console();
     String username = console.readLine("Enter your username: ");
     ```
4. **Command-Line Arguments:**
   * Command-line arguments are user inputs passed to a Java program when it's launched from the command line.
   * They are accessed through the `args` parameter in the `main` method.
   * Example:

     ```java
     public class CommandLineInputExample {
         public static void main(String[] args) {
             String arg1 = args[0];
             int arg2 = Integer.parseInt(args[1]);
         }
     }
     ```

***

1. **File I/O (FileReader, FileInputStream, etc.):**
   * In some cases, you may need to read user inputs from external files. Java provides various I/O classes for reading data from files.
   * You can use classes like `FileReader`, `FileInputStream`, and `BufferedReader` for this purpose.
   * Example:

     ```java
     BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
     String line = reader.readLine();
     ```

**6JOptionPane (Swing):**

* In graphical user interface (GUI) applications using Swing, the `JOptionPane` class can be used to create input dialog boxes.
* It's useful for capturing user input in a more user-friendly way.
* Example:

  ```java
  String name = JOptionPane.showInputDialog("Enter your name:");
  ```

These I/O objects provide different ways to read user inputs in Java, and the choice of which one to use depends on the specific requirements of your application and the source of the input data.
