Java system.out.println() 메서드
이 튜토리얼에서는 System.out.println()
메소드가 Java에서 어떻게 작동하는지 소개하고 주제를 이해하기 위한 몇 가지 예제 코드를 나열합니다.
System.out.print()
는 콘솔이나 표준 출력으로 인쇄하는 데 매우 자주 사용되는 방법입니다. 이 방법을 인쇄 라인 방법이라고도 합니다. 콘솔에 인쇄하는 것 외에도 println()
메서드는 커서를 새 줄로 이동합니다.
이 튜토리얼에서는 이 방법의 내부 작업을 이해하려고 노력할 것입니다.
System.out.println()
메서드는 무엇입니까?
System.out.println()
은 세 부분으로 나눌 수 있습니다.System
은java.lang
패키지의 마지막 클래스이며 JVM이 시작될 때 자동으로초기화
됩니다.initializeSystemClass()
를 사용하여 초기화합니다.System
클래스는PrintStream
클래스의 인스턴스를 포함합니다. 이 인스턴스 변수를out
이라고 합니다.public
,static
및final
수식어로 정의됩니다.
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.out
은 PrintStream
클래스의 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()
메소드에서 toString()
의 역할
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()
메서드가 어떻게 작동하는지 배웠습니다.