안녕하세요. 루미오입니다.
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) 변환
String
을 int
로 변환할 때는 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 -