Programming Language/Java

[Java] int(or long) to String(String to int) 자료형 변환과 String Split

개발왕 금골드 2020. 6. 5. 14:34
반응형

안녕하세요 골드입니다.

오늘은 Java 언어로 Integer 변수를 String으로 변환하는 방법(과 그 반대 경우) 그리고 문자열을 나누는 메소드에 대해서 살펴보겠습니다. 

프로그래밍을 배우다 보면 '그래서 이걸 어디다 써먹는건데?' 라는 생각이 종종 들 때가 있습니다. 지금 소개하는 개념과 메소드들은 여러분이 알고리즘 문제를 푸는데 활용할 수 있고, 파일을 읽고 쓸 때 종종 사용하는 경우가 있습니다. 이미 알고있는 기초적인 부분이지만 오랜만에 사용하려고 하면 잠깐 헷갈릴 수 있습니다. 그런 의미에서 다시 한번 짚어보도록 합시다.

 

1. Integer to String 자료형 변환

int형 변수를 String으로 변환할 때, 우리가 흔히 알고 있는 메소드로 toString()이 있습니다.

 

int num = 10;

String text = num.toString();

 

아시겠지만 Java에서는 이런식으로 변환되지 않습니다.

그럼 변환하는 방법을 몇 가지 소개하겠습니다.

 

1. 빈 문자열 더하기

int형 변수에 빈 문자열 ""을 더한 값은 문자열로 취급됩니다.

문자열 + 문자열 = 문자열

문자열 + 숫자 = 문자열 입니다.

 

따라서

int num = 10;

String text = "" + num;

 

을 하면 int형 변수가 String형으로 변환됩니다.

(혹은 String text = num + "";도 가능합니다. 순서는 상관이 없습니다.)

 

2. Java에서 제공하는 메소드 사용하기

Java에도 toString() 메소드가 존재합니다. 다만 사용법이 위 방법과 다를 뿐입니다.

변환을 위한 toString()메소드는 Integer 클래스에 있습니다. toString() 메소드는 static으로 선언되어 있기 때문에 .연산자로 바로 접근이 가능합니다. toString()의 매개변수로 int형 변수를 선언하면 String형으로 return 되는 방식입니다.

 

 

다른 메소드도 있습니다.

이번에는 String 클래스에 있는 valueOf()라는 메소드를 사용하겠습니다. String.valueOf() 메소드는 내부에서 Integer.toString()을 호출합니다. 겉의 이름만 다를뿐 그 기능은 정확히 일치한다는 뜻입니다. 굳이 생각했을때 Integer.toString()을 바로 쓰는게 나을지는 모르겠습니다.

 

 

 

2. String to Integer 자료형 변환 

이번엔 반대 경우입니다. String형 변수를 int형 변수로 변환하는 방법입니다.

'왜 숫자를 String에 저장하는거야?'라고 생각할 수도 있겠지만, 알고리즘을 해결할 때를 제외하고 의미없이 이렇게 저장했다기 보다 String사이에 있는 숫자값을 Split해서 가져오기 위해 종종 사용된다고 볼 수 있겠습니다. 이번엔 Integer 클래스에 있는 parseInt() 메소드를 사용합니다.

 

 

parseInt() 메소드는 int형으로 형변환하는 메소드입니다. int형으로 형변환 하기 전에 10억이 넘으면 NumberFormatException이라는 예외가 발생하기 때문에 내부적으로 자릿수는 10이 넘지 않도록 합니다. 10이 넘은 경우 혹은 숫자값이 아니라 다른 값을 입력한 경우에 NumberFormatException이 발생합니다.

 


 

 

 다음은 문자열을 자르는(혹은 나누는)방법에 대해서 살펴보겠습니다. 위에서 설명한 개념과 문자열을 나누는(Split)은 같이 쓰이는 경우가 많습니다. 말한대로 Split이라는 메소드를 찾으면 어떤 언어인지 상관없이 문자열을 나누는 메소드일 확률이 매우 높습니다.

 

1. public String[] split(String regex, int limit)

먼저 split이 두 개의 인수를 가지는 경우입니다. 그냥 split을 생각하고 본다면 당황할 수도 있을텐데요. 여러분이 알고 있는 그 split이 맞습니다. 뒤에 limit 인수는 배열의 개수를 의미합니다.

 

 

 

이 메서드는 "/"을 기준으로 문자열을 split해달라는 뜻입니다. 그런데 배열의 개수가 2로 되어있습니다. 그렇기 때문에 hello와 java/world로 나누어 집니다.

arr[0] = hello, arr[1] = java/world 입니다.

 

2. public String[] split(String regex)

그럼 한 가지 인수를 가지는 split 메소드를 사용하겠습니다. 사용법은 같습니다.

 

 

내부적으로 하나의 인수를 가지는 split은 위에 1번 메소드를 호출합니다. 그리고 두 번째 인수의 값이 limit이 없다는 뜻인 0으로 선언되는 것입니다.

 

이상 자료형 변환과 String split에 대해 알아보았습니다.

 

 

여기까지 골드였습니다.

감사합니다.

반응형