The System class

The System class in Java is a final class in java.lang package that provides useful system-related utilities.

It cannot be instantiated (constructor is private), and all of its members are static.


🔑 Features of System Class

Here are the main things you can do with it:

1. Standard Input, Output, Error Streams

  • System.out → Standard output (usually console).
  • System.err → Standard error output.
  • System.in → Standard input (keyboard by default).

Example:

public class SystemExample1 {
    public static void main(String[] args) {
        System.out.println("Hello from System.out");
        System.err.println("This is an error message");
    }
}

What is a Stream in Programming?

A stream is a sequence of data elements that can be read (input stream) or written (output stream) over time.
Think of it like a flow of water in a pipe: data flows from a source to a destination

2. Exit JVM

  • System.exit(statusCode) → Terminates the program.
    • 0 → Normal termination.
    • Non-zero → Abnormal termination.

Example:

public class SystemExample2 {
    public static void main(String[] args) {
        System.out.println("Before exit");
        System.exit(0);
        System.out.println("This will not be printed");
    }
}

3. Current Time

  • System.currentTimeMillis() → Milliseconds since Jan 1, 1970 UTC.
  • System.nanoTime() → High-resolution time (nanoseconds).

Example:

public class SystemExample3 {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();

        // Some task
        for (int i = 0; i < 1_000_000; i++) {}

        long end = System.currentTimeMillis();
        System.out.println("Time taken: " + (end - start) + " ms");
    }
}

4. Array Copy

  • System.arraycopy(src, srcPos, dest, destPos, length) → Efficient array copying.

Example:

public class SystemExample4 {
    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4, 5};
        int[] b = new int[5];

        System.arraycopy(a, 0, b, 0, a.length);

        for (int n : b) {
            System.out.print(n + " ");
        }
    }
}

✅ Output:

1 2 3 4 5

5. Garbage Collection

  • System.gc() → Suggests JVM to run Garbage Collector. (Not guaranteed).

Example:

public class SystemExample5 {
    public static void main(String[] args) {
        System.gc(); // Requests GC
        System.out.println("Garbage Collection requested");
    }
}

6. System Properties & Environment Variables

  • System.getProperty(String key) → Gets JVM/system property.
  • System.getenv(String name) → Gets environment variable.

Example:

public class SystemExample6 {
    public static void main(String[] args) {
        System.out.println("Java Version: " + System.getProperty("java.version"));
        System.out.println("User Directory: " + System.getProperty("user.dir"));
        System.out.println("PATH: " + System.getenv("PATH"));
    }
}

🔎 Summary

  • System.out, System.err, System.in → I/O
  • System.exit(int) → Terminate program
  • System.currentTimeMillis(), System.nanoTime() → Time measurement
  • System.arraycopy() → Fast array copy
  • System.gc() → Suggest garbage collection
  • System.getProperty(), System.getenv() → Properties & environment

Leave a Reply