2017-09-24 9 views
1

printf 메서드의 구현을 PrintStream 클래스에서 살펴 보았을 때, 나는 같은 클래스에서 format 메서드를 호출하는 것입니다. 난 당신이 format 메소드를 호출 할 때 printf 방법을 필요했던 이유를 찾으려고 할 때 PrintStream 클래스가 printf 및 format 메서드를 동일한 방식으로 사용하는 이유는 무엇입니까?

public PrintStream printf(String arg0, Object... arg1) { 
    return this.format(arg0, arg1); 
} 

public PrintStream printf(Locale arg0, String arg1, Object... arg2) { 
    return this.format(arg0, arg1, arg2); 
} 

, 내가 가진 모든 이들이 정확히 동일한 방식으로 행동 을 의미 대답했다.

둘 다 같은 클래스의 구성원 인 경우

, 둘 다 public 그들 모두 1.5Java에 추가되었습니다되어, 다음 왜 printf 방법은 정의?

+0

나는'format' 메소드가 정의 된 이유는 무엇입니까? 나에게 "format"이라는 이름은 인쇄를 의미하는 것이 아니라 "printf"를 의미하고,'printf'는 상응하는 [C method] (http://www.cplusplus.com/reference/cstdio/printf/)와 아주 비슷하게 일치합니다 기능. 'String.format()'은 결과를 형식화하고 * 반환하기 때문에 의미가 있습니다. 'PrintStream.printf()'는 형식화 된 문자열을 출력하기 때문에 의미가 있습니다. 그것들을 감안할 때'PrintStream.format()'은 그 효과를 혼란 스럽거나 오해의 소지가 있습니다. 적어도 직감적이지는 않습니다 *. – Andreas

+0

@Andreas, 정확히! 문제는 다른 사람을 호출 할 때 두 가지 방법이있는 이유입니다. – Yogesh

+0

자연이 고양이와 ** 개를 발명 한 이유는 무엇입니까? 그들은 모두 육식 동물입니다. 확실히 그 종 중 하나는 불필요합니다! –

답변

0

는 printf와 방법 왜

뒤에 실제 생각은

더 나은 저자 자체에 의해 설명 될 수를 정의하지만. 그러나 중요한 사실은 documented입니다.

API를 사용하는 동안 용어는 사용자에게 친숙 함이 중요합니다.

편의 방법 지정된 형식 문자열과 인수를 사용하여이 출력 스트림 포맷 문자열을 작성한다.

호출과 정확하게 같은 방법으로 형태 out.printf(l, format, args) 동작합니다의 메소드 호출

out.format(l, format, args) 

나는 format 불편하지만, 예시하는 말을하지 않을 printf를 다른 클래스의 메서드로 사용하여 문자열을 형식화하고 인쇄했다고 가정 해 봅시다. 같은 기능의 의도로 다른 클래스에서 동일한 메서드 이름을 사용하는 것이 편리하다는 것을 알았습니다. 그것은 API를 이름의 아주 좋은 예를하지 않을 수

하지만 -

https://stackoverflow.com/questions/46386664/why-does-printstream-class-has-printf-and-format-methods-if-they-behave-in-same/46386688?noredirect=1#comment79731283_46386688

https://stackoverflow.com/questions/46386664

(위 의도적 형식) 모두 내가 찾을 수있는 그냥이 질문에 착륙 것 그것의 ID와 함께 질문의 제목을 추가하는 것이 편리하거나 다른 시간 (사용자 편의)에 액세스하는 동안 나는 그렇지 않을 수도 있습니다.

+0

그래서,'format' 메소드가 편리한 메소드가 아니란 말입니까? – Ravi

+0

@Ravi 아니, 그게 내 뜻이 아니야. API 사용은 클라이언트에 따라 다릅니다. 만약 내가'printf'를 다른 클래스의 메소드로 사용하여 문자열을 포맷하고 출력했다면 같은 기능의 의도를 가진 다른 클래스에서 같은 메소드 이름을 사용하는 것이 편리하다는 것을 알았을 것입니다. – nullpointer

+1

부분 일치. – Ravi