2014-12-01 1 views
2

의심의 여지가없는이 정도의 명확성. 에서 다음과 같은 : 내가 결론 것은int 값이 System.out.println이있는 Integer Wrapper 클래스 객체로 변환 되었습니까?

int a = 10; 
System.out.println(a); 

그 변수 'A'int 먼저 Integer 래퍼 클래스 객체로 변환 한 후 toString 방법은 정수 값을 반환 Integer 객체에 대해 호출되는 원시 형 문자열 형식을 println 메서드로 변환합니다. 내 이해가 맞습니까? 올바른 설명이 아니라면?

답변

6

틀렸어. 그것은 참조 int을 처리 할 수있는 docs* :

public void println(int x) 

* 항상 :

+0

Yup..thats 정확한 설명에서, 소스 코드입니다. 오버로드 된 메서드 "public void println (Object x)"과 혼동을 겪습니다.이 경우 기본 toString이 호출됩니다. – Singularity

+0

@ user2580086 자신의 개체를 인쇄하려면 해당 개체 때문에 toString을 재정의하십시오. – Maroun

0

난 당신이 설명 방법이 아니다 생각 없음.하지

System.out은 프리미티브를 직접 인쇄하는 메서드가있는 PrintStream 클래스 (java.io 패키지에 있음)의 정적 참조입니다.

1

System.out 유형을 확인하면 PrintStream이 표시됩니다. Read the docs.

인용구 :

public void println(int x) 

Prints an integer and then terminate the line. This method behaves 
as though it invokes print(int) and then println(). 

Parameters: 
    x - The int to be printed. 

그래서, 아니, Integer에는 변환이 수행되지 않습니다. int은 위의 메서드의 서명과 정확히 일치하므로 메서드가 호출됩니다. 내부적으로 발생하는 것은 지정되지 않지만 Integer으로 변환되지 않고 Integer.toString()을 직접 호출합니다.

0

정확하게 말해서 실제로는 String.valueOf(int) 메서드를 사용합니다.

PrintStream

/** 
* Prints the string representation of the int {@code i} followed by a newline. 
*/ 
public void println(int i) { 
    println(String.valueOf(i)); 
} 
관련 문제