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() 이었다.

속도와 간단함으로 보았을 땐 ""+ 이었지만 추후에 좀더 성능을 고려해서 다시 실험해보아야겠다.

각종 타입 변환하기

byte _byte = 12;
int _int = 123;
long _long = 12;
float _float = 1.23f;
double _double = 123.123;
String str;

// Byte <-> String
str = Byte.toString(_byte);
_byte = Byte.parseByte(str);
				
// Integer <-> String
str = Integer.toString(_int);
_int = Integer.parseInt(str);
				
// Long <-> String
str = Long.toString(_long);
_long = Long.parseLong(str);
				
// Float <-> String
str = Float.toString(_float);
_float = Float.parseFloat(str);
				
// Double <-> String
str = Double.toString(_double);
_double = Double.parseDouble(str);;



'대학 생활 > JAVA' 카테고리의 다른 글

[JAVA] java.io.File 클래스  (0) 2014.04.10
[JAVA]정적필드, 정적메소드  (0) 2014.03.18
[JAVA] heap, stack 메모리  (0) 2014.01.24
[JAVA] ArrayList, LinkedList, Stack, Queue  (0) 2014.01.09

변수란

하나의 값을 저장할 수 있는 공간.

 

변수의 선언

변수타입 변수이름;

char name;    // 문자형 변수 name을 선언한다.

변수의 이름(메서드, 클래스의 이름도 포함)을 선언할때, 대소문자 구분해야한다.

숫자로 시작하거나, 예약어를 사용하면 안 된다.

특수문자는 '_'와 '$'만 사용가능하다.

int num = 6 ;    // 선언후 변수의 값을 6으로 초기화 한다. 

 

변수의 타입과 크기

기본형(Primitive type) : boolean, char, byte, short, int, long, float, double

참조형(Reference type) : 기본형을 제외한 나머지 타입

 

 

1 byte

2 byte

4 byte

8 byte

논리형

boolean

문자형

char

(유니코드)

정수형

byte

short

int

(기본 자료형)

long

실수형

float

double

(기본 자료형)

 

데이터 타입

변수의 범위 

 기본값

크기 

boolean

true, false

 false

1 byte

byte

\u0000~\uffff (0~65,535)

 0

1 byte

char

-128~127

 '\u000'

2 byte

short

-32,768~32,767

 0

2 byte

int

-2,147,483,648~2,147,483,647

 0

4 byte

long

-9223372036854775808~9223372036854775807

 0L

8 byte

float

1.4E-45~3.4028235E38

 0.0f

4 byte

double

4.9E-324~1.7976931348623157E308

 0.0 또는 0.0d

8 byte

 

 

 

+ Recent posts