저는 C++에 대한 지식과 System.out.println()에 대해 Java를 배우는 초보자입니다. 지금 당장 혼란 스럽네. 그래서 System은 클래스이고, out은 메소드를 호출 할 수있는 변수입니다. ?? 에 따라 : http://journals.ecs.soton.ac.uk/java/tutorial/getStarted/application/objects.html out 변수는 변수이며 변수는 컴퓨터 메모리의 저장 위치이며 형식 이름과 내용이 있습니다. .getLength()와 같은 메서드를 사용할 수있는 문자열과 같은 객체는 아닙니다. 웹 사이트에서 설명하는 방법은 Out이 PrintStream 클래스의 인스턴스를 참조하지만 그 방법은 무엇입니까?Java에서 System.out은 PrintStream 클래스를 어떻게 참조합니까?
답변
이 객체
당신의 추론은 잘못된 것입니다 곳이 아니다. System.out
은 (참조)입니다.
참조 유형은 Javadoc에 설명 된대로 PrintStream
입니다. out
당신이 메소드를 호출 할 수있는 객체 (PrintStream
의 인스턴스)를 들고 변수 :
System.out.println();
out
이 메서드를 호출하지 않습니다 이것은 예를 들어, System.out
에 PrintStream
의 메소드를 호출 할 수 있음을 의미 . 예를 들어
: 또한
void print(PrintStream ps, Object o) {
ps.println(o);
}
...
print(System.out, "hey!");
아웃을 할 수
System.out.println("hey!");
는 시스템라는 클래스의 공공 정적 필드입니다.
공개이므로 메서드를 호출 할 수 있습니다.
해당 유형은 입니다. PrintStream입니다.
배울 수있는 가장 좋은 방법은 설명서를 참조하는 것입니다
주의가 밖으로에 , 설명 상단 부분 및 ERR.
System.out으로는 그 출력 C++ 표준 출력의 등가물에 링크의 PrintStream의 특정 인스턴스이다
그래서 System의 변수이지만 PrintStream System() {PrintStream out = new PrintStream;}을 참조합니까? –
"속성"이 올바른 용어입니다. 그것은 클래스 시스템 {static PrintStream out = ...;}과 비슷하지만 Java 가상 머신에 의해 생성되고 초기화됩니다 – thedayofcondor
System.out은 객체이며 print()와 같은 메소드를 호출 할 수 있습니다 – thedayofcondor
더 엄격 그렇게 입력 PrintStream
의 객체를 참조 공용 정적 필드는 예이다 , 당신은 그것에 메서드를 호출 할 수 있습니다.
Java 참조는 C 포인터와 유사합니다 (적어도 사용되는 방식에는 분명히 상당한 차이가 있습니다).
시스템은 println() 메소드를 호출 할 수있는 PrintStream 클래스의 객체를 보유하는 최종 변수가있는 최종 클래스입니다.
실제로 System.out.println(String args[])
의 out 매개 변수는 System
클래스의 정적 필드입니다. 필드가 선언 될 때마다 특정 데이터 유형이 있어야합니다. 이 클래스에서 out 필드는 static PrintStream out;
으로 정의됩니다.
이것은 out의 데이터 유형이 PrintStream
클래스임을 의미합니다. 이런 식으로 System.out
은 실제로 PrintStream
클래스의 객체를 나타냅니다. 이 개체를 사용하여 메서드를 PrintStream
클래스라고합니다. 대략이 같은 시스템 클래스의
생각해 : 여기
package java.lang;
public final class System {
public final static PrintStream out;
}
는 "유형"의 PrintStream의 정적 최종 변수입니다. 정적 변수이므로 System 클래스의 객체를 만들지 않고 "ClassName.variableName"을 호출하여 System.out을 수행 할 수 있습니다.
이제 Out은 "PrintStream"클래스의 참조 변수입니다. 지금까지이 참조 변수 만 만들어졌으며 Printstream 클래스의 "개체"를 참조하지 않습니다. 그러나 System 클래스는 메모리에로드 될 때 PrintStream의 객체를 만듭니다. 시스템 클래스의 완전한 소스 코드 인 아래의 링크 initializeSystemClass()
과 setOut0()
을 참조하십시오. (이 엄청난 코드에 압도 당하지 말고, System 내부에서 호출되는 "PrintStream()"(여기 1095 행)이 있음을 확인하십시오). 우리의 PrintStream 클래스의 객체가있을 때
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/System.java
그래서, 우리 밖으로 참조 변수는 쉽게 바로, 그것의 메소드를 호출 할 수 있습니다? 이것은 우리가 System.out.println()을 호출하는 방법입니다.
- 1. PHP에서 클래스를 어떻게 참조합니까?
- 2. 자바에서 다른 클래스를 어떻게 참조합니까?
- 3. 어떻게 다차원 배열을 참조합니까?
- 4. 수퍼 클래스 내부에 정의 된 클래스를 어떻게 참조합니까?
- 5. Dojo를 사용하여 Google Maps 이벤트에서 포함 된 클래스를 어떻게 참조합니까?
- 6. PHP 함수는 어떻게 참조합니까?
- 7. dylib를 어떻게 참조합니까?
- 8. 자바 - 캡처 System.err.println을하거나의 PrintStream
- 9. Java에서 클래스를 사용하는 범위는 어떻게 작동합니까?
- 10. 하위 클래스의보기 컨트롤러를 어떻게 참조합니까?
- 11. 다른 파일의 변수를 어떻게 참조합니까?
- 12. boost :: variant 저장소는 어떻게 참조합니까?
- 13. clojurescript에서 javascript의이 키워드를 어떻게 참조합니까?
- 14. 레지스트리에 저장된 경로를 어떻게 참조합니까?
- 15. VBA에서 HTMLSelect 개체를 어떻게 참조합니까?
- 16. 어떻게 자바 스크립트 파일을 참조합니까?
- 17. PHP는 현재 문서를 어떻게 참조합니까?
- 18. 다른 클래스의 MainViewController를 어떻게 참조합니까?
- 19. 개체를 만든 개체를 어떻게 참조합니까?
- 20. Java에서 클래스를 결합하는 방법
- 21. Java에서 jar 클래스를 사용하는 자바
- 22. 오브젝트는 Java에서 오브젝트 클래스를 구성합니다.
- 23. 클래스를 Java에서 이벤트 소스로 만들기
- 24. 런타임시 Java에서 클래스를 오버로드하는 방법
- 25. Java에서 마샬링 클래스를 구현하려면 어떻게해야합니까?
- 26. Spring.NET 구성에서 기존 객체를 어떻게 참조합니까?
- 27. XAML의 DataTemplate에서 일치하는 개체를 어떻게 참조합니까?
- 28. iOS에서 xib 파일로 만든보기에서 개체를 어떻게 참조합니까?
- 29. C# : form.cs에서 Program.cs의 내용을 어떻게 참조합니까?
- 30. WebMatrix에서 제 3 자 어셈블리를 어떻게 참조합니까?
모든 변수는 그 의미에서 "객체"입니다. ** 편집 : ** 정의에 따라 - 메소드를 호출 할 수 있음 - 이는 모든 변수에 해당합니다 (엄격히 말하면 모든 변수가 @delnan에 의해 지적 된 바와 같이 객체는 아닙니다). – mellamokb
@mellamokb Primitives ('int'와 friends)는 대부분의 "object"정의에 의한 객체가 아닙니다 (모든 유용한 것들을 포함합니다, 나는 논쟁 할 것입니다). 그리고 (참조 형의) 변수 *는 객체 *를 가리키며, 그것들은 객체 자체가 아닙니다. – delnan
@mellamokb 이것은 나를 혼란스럽게합니다 ... –