본문 바로가기

프로그래밍/Java

자바(Java) String to Number(short, int, logn, float, double) 변환

안녕하세요. 루미오입니다.

Java에서 숫자 형태의 String을 숫자 (short, int, logn, float, double)로 변환하는 방법을 알아보겠습니다.

순서
● String to int (Integer) 변환
● String to short (Short) 변환
● String to long (Long) 변환
● String to float (Float) 변환
● String to double(Double) 변환

Stringint로 변환할 때는 Integer class에서 제공하는 parseInt()valueOf()함수를 사용하면 됩니다. 두 함수는 공통으로 String이 숫자로 변환할 수 없는 경우 NumberFormatException을 throw 합니다. 그리고 두 함수의 차이점은 valueOf() 함수가 내부적으로 parseInt() 함수를 사용하기 때문에 속도가 좀 느린 점, valueOf() 함수는 Integer type을 반환하고, parseInt() 함수는 int (primitive) type을 반환한다는 점입니다.

결론적으로 parseInt() 함수를 주로 사용하고, Integer type을 사용하고 싶은 경우에만 valueOf() 함수를 사용하면 됩니다.

Short, Logn, Float, Double 또한 Integer와 동일하며, 차이점이라면 parseShort() parseLong() parseFloat() parseDouble()로 함수 이름이 다른 점 뿐입니다.

 

String to int (Integer) 변환

[Integer.parseInt() 예제]

/*
 * Integer.parseInt() 예제
 *		int(primitive) type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 *		2진수 ~ 36진수까지 가능하다.
 */
try {
	int iNum;

	iNum = Integer.parseInt("101");
	System.out.println(iNum);	// 101

	iNum = Integer.parseInt("+101");
	System.out.println(iNum);	// 101

	iNum = Integer.parseInt("-101");
	System.out.println(iNum);	// -101

	// iNum = Integer.parseInt("1-01");	// error : NumberFormatException

	iNum = Integer.parseInt("101", 2);	// 2진수를 10진수로 바꾼다
	System.out.println(iNum);	// 5

	iNum = Integer.parseInt("101", 16);	// 16진수를 10진수로 바꾼다
	System.out.println(iNum);	// 257

	iNum = Integer.parseInt("101", 36);	// 36진수를 10진수로 바꾼다
	System.out.println(iNum);	// 1297
} catch(NumberFormatException e) {
	e.printStackTrace();
}

parseInt() 함수는 int (primitive) type을 반환합니다. 숫자 이외 문자는 -, + 문자만 허용하며, 항상 제일 앞에 와야 합니다. 또한 입력값의 진수(2진수 ~ 36진수) 지정이 가능하며, 항상 10진수의 값을 반환합니다.

[Integer.valueOf() 예제]

/*
 * Integer.valueOf() 예제
 *		내부적으로 Integer.parseInt() 함수를 호출한다.
 *		Integer type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 *		2진수 ~ 36진수까지 가능하다.
 */
try {
	Integer integerNum = null;

	integerNum = Integer.valueOf("101");
	System.out.println(integerNum.getClass().getName());	// java.lang.Integer
	System.out.println(integerNum);	// 101

	integerNum = Integer.valueOf("+101");
	System.out.println(integerNum);	//101

	integerNum = Integer.valueOf("-101");
	System.out.println(integerNum);	// -101

	// integerNum = Integer.valueOf("1-01");	// error : NumberFormatException

	integerNum = Integer.valueOf("101", 2);	// 2진수를 10진수로 바꾼다
	System.out.println(integerNum);	// 5

	integerNum = Integer.valueOf("101", 16);	// 16진수를 10진수로 바꾼다
	System.out.println(integerNum);	// 257

	integerNum = Integer.valueOf("101", 36);	// 36진수를 10진수로 바꾼다
	System.out.println(integerNum);	// 1297
} catch(NumberFormatException e) {
	e.printStackTrace();
}

valueOf() 함수는 return type이 Integer type이라는 차이점만 빼면 valueOf() 함수와 동일며, 내부적으로 valueOf() 함수를 사용하기 때문에 조금 느립니다.

 

String to short (Short) 변환

[Short.parseShort() 예제]

/*
 * Short.parseShort() 예제
 *		short(primitive) type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 *		2진수 ~ 36진수까지 가능하다.
 */
try {
	short sNum;

	sNum = Short.parseShort("101");
	System.out.println(sNum);	// 101

	sNum = Short.parseShort("+101");
	System.out.println(sNum);	// 101

	sNum = Short.parseShort("-101");
	System.out.println(sNum);	// -101

	// shortNum = Short.parseShort("1-01");	// error : NumberFormatException

	sNum = Short.parseShort("101", 2);	// 2진수를 10진수로 바꾼다
	System.out.println(sNum);	// 5

	sNum = Short.parseShort("101", 16);	// 16진수를 10진수로 바꾼다
	System.out.println(sNum);	// 257

	sNum = Short.parseShort("101", 36);	// 36진수를 10진수로 바꾼다
	System.out.println(sNum);	// 1297
} catch(NumberFormatException e) {
	e.printStackTrace();
}

parseShort() 함수는 short (primitive) type을 반환합니다. 숫자 이외 문자는 -, + 문자만 허용하며, 항상 제일 앞에 와야 합니다. 또한 입력값의 진수(2진수 ~ 36진수) 지정이 가능하며, 항상 10진수의 값을 반환합니다.

[Short.valueOf() 예제]

/*
 * Short.valueOf() 예제
 *		내부적으로 Short.parseShort() 함수를 호출한다.
 *		Short type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 *		2진수 ~ 36진수까지 가능하다.
 */
try {
	Short shortNum = null;

	shortNum = Short.valueOf("101");
	System.out.println(shortNum.getClass().getName());	// java.lang.Short
	System.out.println(shortNum);	// 101

	shortNum = Short.valueOf("+101");
	System.out.println(shortNum);	//101

	shortNum = Short.valueOf("-101");
	System.out.println(shortNum);	// -101

	// shortNum = Short.valueOf("1-01");	// error : NumberFormatException

	shortNum = Short.valueOf("101", 2);	// 2진수를 10진수로 바꾼다
	System.out.println(shortNum);	// 5

	shortNum = Short.valueOf("101", 16);	// 16진수를 10진수로 바꾼다
	System.out.println(shortNum);	// 257

	shortNum = Short.valueOf("101", 36);	// 36진수를 10진수로 바꾼다
	System.out.println(shortNum);	// 1297
} catch(NumberFormatException e) {
	e.printStackTrace();
}

valueOf() 함수는 return type이 Short type이라는 차이점만 빼면 valueOf() 함수와 동일며, 내부적으로 valueOf() 함수를 사용하기 때문에 조금 느립니다.

 

String to long (Long) 변환

[Long.parseLong() 예제]

/*
 * Long.parseLong() 예제
 *		long(primitive) type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 *		2진수 ~ 36진수까지 가능하다.
 */
try {
	Long lNum;

	lNum = Long.parseLong("101");
	System.out.println(lNum);	// 101

	lNum = Long.parseLong("+101");
	System.out.println(lNum);	// 101

	lNum = Long.parseLong("-101");
	System.out.println(lNum);	// -101

	// lNum = Long.parseLong("1-01");	// error : NumberFormatException

	lNum = Long.parseLong("101", 2);	// 2진수를 10진수로 바꾼다
	System.out.println(lNum);	// 5

	lNum = Long.parseLong("101", 16);	// 16진수를 10진수로 바꾼다
	System.out.println(lNum);	// 257

	lNum = Long.parseLong("101", 36);	// 36진수를 10진수로 바꾼다
	System.out.println(lNum);	// 1297
} catch(NumberFormatException e) {
	e.printStackTrace();
}

parseLong() 함수는 long (primitive) type을 반환합니다. 숫자 이외 문자는 -, + 문자만 허용하며, 항상 제일 앞에 와야 합니다. 또한 입력값의 진수(2진수 ~ 36진수) 지정이 가능하며, 항상 10진수의 값을 반환합니다.

[Long.valueOf() 예제]

/*
 * Long.valueOf() 예제
 *		내부적으로 Long.parseLong() 함수를 호출한다.
 *		Long type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 *		2진수 ~ 36진수까지 가능하다.
 */
try {
	Long longNum = null;

	longNum = Long.valueOf("101");
	System.out.println(longNum.getClass().getName());	// java.lang.Long
	System.out.println(longNum);	// 101

	longNum = Long.valueOf("+101");
	System.out.println(longNum);	//101

	longNum = Long.valueOf("-101");
	System.out.println(longNum);	// -101

	// longNum = Long.valueOf("1-01");	// error : NumberFormatException

	longNum = Long.valueOf("101", 2);	// 2진수를 10진수로 바꾼다
	System.out.println(longNum);	// 5

	longNum = Long.valueOf("101", 16);	// 16진수를 10진수로 바꾼다
	System.out.println(longNum);	// 257

	longNum = Long.valueOf("101", 36);	// 36진수를 10진수로 바꾼다
	System.out.println(longNum);	// 1297
} catch(NumberFormatException e) {
	e.printStackTrace();
}

valueOf() 함수는 return type이 Long type이라는 차이점만 빼면 valueOf() 함수와 동일며, 내부적으로 valueOf() 함수를 사용하기 때문에 조금 느립니다.

 

String to float (Float) 변환

[Float.parseFloat() 예제]

/*
 * Float.parseFloat() 예제
 *		float(primitive) type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 */
try {
	Float fNum;

	fNum = Float.parseFloat("101");
	System.out.println(fNum);	// 101.0

	fNum = Float.parseFloat("+101");
	System.out.println(fNum);	// 101.0

	fNum = Float.parseFloat("-101");
	System.out.println(fNum);	// -101.0

	// fNum = Float.parseFloat("1-01");	// error : NumberFormatException
} catch(NumberFormatException e) {
	e.printStackTrace();
}

parseFloat() 함수는 float (primitive) type을 반환합니다. 숫자 이외 문자는 -, + 문자만 허용하며, 항상 제일 앞에 와야 합니다. 또한 항상 10진수의 값을 반환합니다.

[Float.valueOf() 예제]

/*
 * Float.valueOf() 예제
 *		내부적으로 Float.parseFloat() 함수를 호출한다.
 *		Float type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 */
try {
	Float floatNum = null;

	floatNum = Float.valueOf("101");
	System.out.println(floatNum.getClass().getName());	// java.lang.Float
	System.out.println(floatNum);	// 101.0

	floatNum = Float.valueOf("+101");
	System.out.println(floatNum);	//101.0

	floatNum = Float.valueOf("-101");
	System.out.println(floatNum);	// -101.0

	// floatNum = Float.valueOf("1-01");	// error : NumberFormatException
} catch(NumberFormatException e) {
	e.printStackTrace();
}

valueOf() 함수는 return type이 Float type이라는 차이점만 빼면 valueOf() 함수와 동일며, 내부적으로 valueOf() 함수를 사용하기 때문에 조금 느립니다.

 

String to double(Double) 변환

[Double.parseDouble() 예제]

/*
 * Double.parseDouble() 예제
 *		double(primitive) type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 */
try {
	Double dNum;

	dNum = Double.parseDouble("101");
	System.out.println(dNum);	// 101.0

	dNum = Double.parseDouble("+101");
	System.out.println(dNum);	// 101.0

	dNum = Double.parseDouble("-101");
	System.out.println(dNum);	// -101.0

	// dNum = Double.parseDouble("1-01");	// error : NumberFormatException
} catch(NumberFormatException e) {
	e.printStackTrace();
}

parseDouble() 함수는 double (primitive) type을 반환합니다. 숫자 이외 문자는 -, + 문자만 허용하며, 항상 제일 앞에 와야 합니다. 또한 항상 10진수의 값을 반환합니다.

[Double.valueOf() 예제]

/*
 * Double.valueOf() 예제
 *		내부적으로 Double.parseDouble() 함수를 호출한다.
 *		Double type을 return한다.
 *		10진수를 return한다.
 *		+, - 문자만 허용하며 제일 앞에 와야 한다.
 */
try {
	Double doubleNum = null;

	doubleNum = Double.valueOf("101");
	System.out.println(doubleNum.getClass().getName());	// java.lang.Double
	System.out.println(doubleNum);	// 101.0

	doubleNum = Double.valueOf("+101");
	System.out.println(doubleNum);	//101.0

	doubleNum = Double.valueOf("-101");
	System.out.println(doubleNum);	// -101.0

	// doubleNum = Double.valueOf("1-01");	// error : NumberFormatException
} catch(NumberFormatException e) {
	e.printStackTrace();
}

valueOf() 함수는 return type이 Double type이라는 차이점만 빼면 valueOf() 함수와 동일며, 내부적으로 valueOf() 함수를 사용하기 때문에 조금 느립니다.

 

감사합니다.

- 루미오 . LOOMIO -