Network disconnected
Description
다음 클래스의 main 메소드에서는 별모양 문자(*)가 10,000개 이어진 문자열을 만들기 위해 두가지 방법을 사용합니다. 하나는 String
에 +
연산을 이용하고, 다른 하나는 StringBuffer
의 append()
를 이용하는데요. 똑같은 문자열을 만들어 내는데 걸리는 시간을 측정해서 마지막 줄에서 출력하고 있습니다.
제출을 눌러 실행 결과를 비교해 보세요. 똑같은 작업을 수행하는데 성능에서 수십배의 차이가 나는걸 확인할 수 있나요?
String 클래스의 +
연산을 하게 될 때에는 내부적으로 다음과 같은 코드가 실행됩니다.
// + 연산
String str3 = str1 + str2;
// 내부적으로 실행되는 코드
String str3 = new StringBuffer().append(str1).append(str2).toString();
두 경우 결과는 같지만 +
연산을 한 경우에는 반복문 안에서 내부적으로 String
객체를 만들냅니다. 매번 new
를 사용해서 연산을 해야하기 때문에 속도가 그만큼 느려지는 것이지요.
이러한 이유로 문자열을 반복문 안에서 더하는 것은 성능상 문제가 생길 수 있으니 반드시 피해야 합니다.
Result
Stop
Result of [Run Test] or [Submit] will be displayed here
내가 제출한 코드가 왜 틀렸는지 프로그래머스 AI에게 물어보세요.
제출 후 채점하기를 눌러 30점 이상인 경우 물어볼 수 있어요.
베타 기간 동안에는 한 문제당 1번만 물어볼 수 있어요.
베타 기간 동안에는 한 문제당 1번만 물어볼 수 있어요.