Java system.out.println() 메서드

Mohammad Irfan 2023년10월12일
  1. System.out.println() 메서드는 무엇입니까?
  2. System.out.println()은 어떻게 작동합니까?
  3. print() 메소드에서 toString()의 역할
  4. 요약
Java system.out.println() 메서드

이 튜토리얼에서는 System.out.println() 메소드가 Java에서 어떻게 작동하는지 소개하고 주제를 이해하기 위한 몇 가지 예제 코드를 나열합니다.

System.out.print()는 콘솔이나 표준 출력으로 인쇄하는 데 매우 자주 사용되는 방법입니다. 이 방법을 인쇄 라인 방법이라고도 합니다. 콘솔에 인쇄하는 것 외에도 println() 메서드는 커서를 새 줄로 이동합니다.

이 튜토리얼에서는 이 방법의 내부 작업을 이해하려고 노력할 것입니다.

System.out.println() 메서드는 무엇입니까?

  • System.out.println()은 세 부분으로 나눌 수 있습니다.
  • Systemjava.lang 패키지의 마지막 클래스이며 JVM이 시작될 때 자동으로 초기화됩니다. initializeSystemClass()를 사용하여 초기화합니다.
  • System 클래스는 PrintStream 클래스의 인스턴스를 포함합니다. 이 인스턴스 변수를 out이라고 합니다. public, staticfinal 수식어로 정의됩니다.
class System {
  public static final PrintStream out;
  // More Code Below
}

PrintStream 클래스에는 print()println() 메서드가 포함되어 있습니다. 이러한 메서드는 오버로드됩니다.

class PrintStream {
  public void print(argument) {
    // implementation
  }
  public void println() {
    // implementation
  }
  // Overloaded print() and println() methods below
}

따라서 System.outPrintStream 클래스의 out 인스턴스 변수를 제공합니다. 그런 다음 이 인스턴스 변수에서 print() 또는 println() 메서드를 호출할 수 있습니다.

System.out.println()은 어떻게 작동합니까?

  • PrintStream 클래스에는 오버로드된 print()println() 메서드가 여러 개 포함되어 있습니다. 허용되는 매개변수 유형이 다릅니다.
  • 모두 반환 유형이 void입니다.
  • 모든 기본 유형에 대해 오버로드된 메소드가 존재합니다.
  • 또한 문자열을 인쇄하는 오버로드된 메서드와 개체에 대한 또 다른 메서드가 포함되어 있습니다.

아래 코드는 오버로드된 println() 메서드의 작동을 보여줍니다.

public class PrintDemo {
  public static void main(String args[]) {
    int i = 10;
    short s = 10;
    long l = 10;
    char c = 'A';
    char[] charArr = {'A', 'B', 'C'};
    boolean bool = true;
    double d = 10.0;
    float f = 10.0f;
    String str = "hello";
    Object o = new Object();

    System.out.println(); // terminate the current line
    System.out.println(i); // print integer
    System.out.println(s); // print short
    System.out.println(l); // print long
    System.out.println(c); // print char
    System.out.println(charArr); // print char array
    System.out.println(bool); // print boolean
    System.out.println(d); // print double
    System.out.println(f); // print float
    System.out.println(str); // print String
    System.out.println(o); // print Object
  }
}

출력:

10
10
10
A
ABC
true
10.0
10.0
hello
java.lang.Object@433c675d

println() 메소드에 전달된 인수

  • 초심자는 print()println() 메서드가 다양한 인수(varargs)를 사용한다고 생각할 수 있지만 그렇지 않습니다.
  • 예를 들어 아래 코드에서는 정수, 문자열 및 문자를 인쇄하려고 합니다.
public class PrintDemo {
  public static void main(String args[]) {
    int i = 10;
    String s = "hello";
    char c = 'O';
    System.out.println(i + s + c);
  }
}

출력:

10helloO
  • 그러나 우리는 세 가지 다른 인수를 전달하지 않습니다. 쉼표는 메서드의 인수를 구분합니다.
  • 대신 println() 메서드에서 + 연산자를 사용하여 함께 연결됩니다.
  • 문자열과 함께 사용되는 + 연산자는 문자열을 연결하고 문자열을 반환합니다.
  • 위의 코드에서 정수는 먼저 문자열과 연결되고 결과 문자열은 char 변수와 다시 연결됩니다.

주목해야 할 또 다른 사항은 메서드에 전달된 인수가 왼쪽에서 오른쪽으로 평가된다는 것입니다. 따라서 전달된 처음 두 변수가 정수이면 일반 산술 덧셈이 발생하고 덧셈 결과가 문자열과 연결됩니다.

public class PrintDemo {
  public static void main(String args[]) {
    System.out.println(10 + 10 + "hello"); // first integer addition and then string concatenation
  }
}

출력:

20hello

그러나 문자열 뒤에 두 개의 정수가 더 있으면 문자열 연결이 발생합니다.

public class PrintDemo {
  public static void main(String args[]) {
    System.out.println(10 + 10 + "hello" + 1 + 1); // 20hello11 not 20hello2
  }
}

출력:

20hello11

아래에 표시된 규칙을 왼쪽에서 오른쪽으로 적용하여 출력을 계산할 수 있습니다. 문자열이 없으면 일반 산술 덧셈이 수행됩니다.

(any data type + string) = (string + any data type) = (concatenated string)

print()println() 메소드는 인수에서 toString() 메소드를 암시적으로 호출합니다. 인수를 문자열로 변환합니다. 이것은 특정 방식으로 사용자 정의 클래스 인스턴스를 인쇄하려는 경우 매우 유용합니다.

다른 형식으로 객체를 인쇄하기 위해 클래스의 toString() 메서드를 재정의할 수 있습니다. 다음 예제는 이를 보여줍니다.

예: toString() 메서드를 재정의하지 않음.

class Demo {
  String field1;
  String field2;

  Demo(String f1, String f2) {
    this.field1 = f1;
    this.field2 = f2;
  }
}
public class PrintDemo {
  public static void main(String args[]) {
    Demo d = new Demo("f1", "f2");
    System.out.print(d);
  }
}

출력:

Demo@433c675d

예: toString() 메서드를 재정의한 후.

class Demo {
  String field1;
  String field2;
  Demo(String f1, String f2) {
    this.field1 = f1;
    this.field2 = f2;
  }
  @Override
  public String toString() {
    return field1 + " " + field2;
  }
}
public class PrintDemo {
  public static void main(String args[]) {
    Demo d = new Demo("f1", "f2");
    System.out.print(d);
  }
}

출력:

f1 f2

요약

print()println() 메소드는 PrintStream 클래스의 일부입니다. System.out 인스턴스 변수를 사용하여 액세스합니다. 이러한 메서드는 다양한 인수 유형을 처리하기 위해 오버로드됩니다. 이러한 메서드는 가변 개수의 인수를 사용하지 않는다는 점을 기억하십시오. 이 튜토리얼에서는 System.out.print()System.out.println() 메서드가 어떻게 작동하는지 배웠습니다.

관련 문장 - Java Print