int(정수)를 String(문자열)로 바꾸는 여러가지 방법
평소에 정수타입의 변수를 문자열로 바꿀 때 +"" 를 자주 사용하였다. 편리하기도하고 습관이 되었기 때문이다. 그러다가 갑자기 궁금해져서 바꾸는 방법에 대해서 페이스북 생활코딩 그룹에 도움을 청했다. 댓글을 통해서 2012년도에 작성된 String.valueOf(int) vs ""+int라는 글을 보았고, 몇가지 더 추가해서 실험해보았다. 실험에 사용된 코드는 아래와 같다.
코드
package Test1; import java.io.IOException; public class TestClass { public static void main(String... args) throws IOException { for (int i = 0; i < 10; i++) { long svo = perfStringValueOf(); long qqp = perfQuoteQuotePlus(); long its = perfIntegerToString(); long sf = perfStringFormat(); System.out.printf("String.valueOf() : %.3f\t", svo / 1e3); System.out.printf("Integer.toString() : %.3f\t", its / 1e3); System.out.printf("\"\"+ : %.3f\t", qqp / 1e3); System.out.printf("String.Format() : %.3f\n", sf / 1e3); } } private static long perfStringValueOf() { long start = System.nanoTime(); final int runs = 100000; String s; for (int i = 0; i < runs; i++) { s = String.valueOf(i * i); if (s.length() < 1) throw new AssertionError(); } long time = System.nanoTime() - start; return time / runs; } private static long perfQuoteQuotePlus() { long start = System.nanoTime(); final int runs = 100000; String s; for (int i = 0; i < runs; i++) { s = "" + i * i; if (s.length() < 1) throw new AssertionError(); } long time = System.nanoTime() - start; return time / runs; } private static long perfIntegerToString() { long start = System.nanoTime(); final int runs = 100000; String s; for (int i = 0; i < runs; i++) { s = Integer.toString(i * i); if (s.length() < 1) throw new AssertionError(); } long time = System.nanoTime() - start; return time / runs; } private static long perfStringFormat() { long start = System.nanoTime(); final int runs = 100000; String s; for (int i = 0; i < runs; i++) { s = String.format("%d", i * i); if (s.length() < 1) throw new AssertionError(); } long time = System.nanoTime() - start; return time / runs; } }
결과
첫 실행 속도로 보았을 땐 Integer.toString() < String.valueOf() < ""+ < String.Format() 이다. 하지만 여러번 반복하고 평균적으로 보았을 땐 ""+ < Integer.toString() < String.valueOf() < String.Format() 이었다.
속도와 간단함으로 보았을 땐 ""+ 이었지만 추후에 좀더 성능을 고려해서 다시 실험해보아야겠다.
'대학 생활 > JAVA' 카테고리의 다른 글
[JAVA] String 인코딩 (0) | 2015.04.01 |
---|---|
[JAVA] equals, hashCode 메서드 함께 오버라이드하기. (0) | 2015.02.11 |
[JAVA] method array 만들기 (0) | 2015.01.14 |
[JAVA] 올바른 list.toArray() 사용법 (1) | 2015.01.07 |