2012-03-03 2 views
1

콘솔 기반의 인벤토리 프로그램을 작성 중이며 toString() 메서드를 재정 의하여 고객 개체를 화면에 인쇄하려고합니다.toString() - 새 행의 서식 지정

나는 다음과 같은 접근법을 가졌지 만 둘 다 꽤 지저분 해 보인다. 어느 것이 더 나은 관행인가?

String toString = (name + newLine + 
         addressLine_1 + newLine + 
         addressLine_2 + newLine + 
         city + newLine + 
         country + newLine + 
         postCode + newLine); 


String toString = System.out.println(String.format("%s%n%s%n%s**%n%s%n%s%n%s%n", name, addressLine_1, addressLine_2, city, country, postCode)); 
+1

모두 똑같이 지저분한됩니다. : D – ApprenticeHacker

답변

3

String Builder를 사용하십시오! StringBuilder (또는 JDK의 이전 버전에 대한 StringBuffer가), 또한 문자열 연결을보다 효율적으로뿐만 아니라 더 읽을 수있게되어 사용

StringBuilder strBuilder = new StringBuilder(); 
strBuilder.append(name); 
strBuilder.append(System.getProperty("line.separator")); 
strBuilder.append(addressLine_1); 
/* ... */ 

System.out.println(strBuilder.toString()); 
return strBuilder.toString(); 

. 또한 교차 플랫폼 행 끝을 확인하려면 System.getProperty("line.separator")을 사용하십시오.

+0

+1 line.separator 접근 방식의 경우. –

+0

+1에 대한 System.getProperty ("line.separator") – keuleJ

1

첫 번째 것이 좋습니다.

가까운 미래에 복잡한 개체를 출력하기 위해 프로그램이 향상 될 수 있습니다. Person 인 경우 첫 번째 방법을 사용하는 것이 훨씬 깔끔하고 유지 관리가 쉽습니다.

문자열 연결 + .. +는 성능 문제가별로 없습니다. 그때까지 StringBuilder 또는 StringBuffer을 계속 사용할 수 있습니다 (JDK가 < 인 경우)

+1

+1, 이전 버전의 JDK를위한'StringBuffer' 제안을 위해, 나는 그것을 언급하는 것을 잊어 버렸다. – ApprenticeHacker

0

가장 좋은 방법은 StringBuilder를 사용하는 것입니다. +는 매번 새로운 문자열을 만듭니다. 좋은 연습은 아닙니다. StringBuilder를 사용하여 toString() 함수를 재정의 (override)하십시오.

0

이제와 시스템에 의존 행 분리 얻을 수 있습니다 :

System.lineSeparator();