해결된 질문
작성
·
26
답변 2
0
메서드이긴한데 스태틱은 아닙니다.
out 자체가 이미 생성된 객체입니다.
println은 out이라는 객체(PrintStream 인스턴스)에 정의된 메서드입니다.
우리가 흔히 쓰는 System.out.println("Hello")는 “out 객체에게 println을 호출하라”는 뜻이지, PrintStream.println(...)을 클래스 이름으로 직접 부르는 정적 호출이 아닙니다.
클래스는 보통 대문자로 시작하기 때문에 앞에 단어를 보면 대략적으로 추측할 수 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 메리님.
Java에서 이해하기 어려운 정적 메서드에 관한 부분에 대한 질문을 주셨네요. max
나 parseInt
같은 메서드는 클래스에 귀속되어 클래스 이름을 통해 직접 호출할 수 있는 정적 메서드입니다. 이는 Math.max()
또는 Integer.parseInt()
로 작성된 코드를 통해 확인할 수 있습니다. 이러한 메서드는 객체의 상태에 의존하지 않기 때문에 클래스로부터 직접 호출 가능합니다.
반면에 println
이나 print
메서드는 System.out
이라는 PrintStream
객체의 인스턴스 메서드입니다. System.out
은 PrintStream
의 정적 필드로, 이 객체를 통해 println()
같은 메서드를 호출하게 됩니다. 따라서 println
과 print
는 정적 메서드가 아닙니다. 대신, 이러한 메서드는 특정 객체(System.out
)를 통한 인스턴스 메서드 호출로 분류됩니다.
다음 링크들을 통해 관련된 질문과 설명을 더 참고하실 수 있습니다:
자바의 정적 메서드와 인스턴스 메서드 차이: Java의 메서드 유형에 대한 기본 이해에 도움이 됩니다.
System.out.println 이해하기: System.out.println
의 구조와 동작 원리에 대해 잘 설명되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.