Language/JAVA

#배열과 int/String : 자료형 변환

paran21 2022. 1. 18. 12:55

(알고리즘 풀면서 계속 테스트해보고 추가/수정 중!!)

 

문자열은 형변환이 비교적 간단한데, int는 단순하지 않다.

List배열에 int가 아닌 Integer 배열이 있고, split같이 String의 메소드를 사용하거나 나누어서 특정한 처리가 필요할 수도 있다.

대체로 int배열은 String/char등으로 변환하고 다시 int배열로 변환하는 방법을 사용한다.

Stream을 사용하기 위해서는 Stream배열로 변환하고 기능을 사용해야 한다. 

 

문자열String과 문자열배열String[]/char[]

문자열String을 문자열배열String[]/char[]로 변환

1) String to char[]

char[] cArray = input.toCharArray();

참고 : char[] cArr = String.valueOf(num).toCharArray(); ☆num은 int

 

2) String to String[] (특정 조건 필요시 : split이용)

String[] arr = new String[길이];

arr = s.split("");

 

문자열배열String[]/char[]을 문자열String으로 변환

1) char[] to String

String str = String.valueOf(cArr);

String str = new String(cArr);

 

3) String[] to String (특정 조건 필요시 : join이용)

String str = String.join("", array)

 

문자열배열String[]과 문자열리스트List<String>

문자열배열String[]에서 문자열리스트List<String>으로 변환하기

  • List<String> strList = Stream.of(strArr).collect(Collectors.toList());

문자열리스트List에서 문자열배열String[]으로 변환하기

  • String[] strArr = strList.toArray(new String[]);

 

정수형배열int[]과 문자열String, 문자열배열String[]

정수형배열int[]를 문자열String으로 변환

  • String str = Arrays.toString(array); +뒤에 .replace, .replaceAll등을 붙여서 조건을 넣을 수 있다.
  • 문자열배열String[]이 필요하면 int[]→String→ String[]로 변환해서 사용할 수 있다.

문자열배열String[]을 정수형배열int[]로 변환

  • int[] numArray = Stream.of(strArray).mapToInt(Integer::parseInt).toArray(); 
  • int나 int[]을 String이나 String[]로 변환해서 사용했을 때 다시 int로 변환하기 위해 사용할 수 있다.
  • 문자열배열이 아니라 문자열String을 int[]로 변환하는 경우에는 strArray대신 str.split("") 등을 사용할 수 있다.

 

문자열String과 정수int

문자열String을 정수int로 변환

  • int num = Integer.parseInt(str);
  • long num = Long.parseLong(str);
  • int num = Integer.valueOf(str).intValue();
    • Integer.valueOf(str)은 Integer로 변환
    • 위의 케이스는 intValue()를 생략해도 자동으로 형변환됨.

정수int를 문자열String으로 변환

  • String str = Integer.toString(num);
  • String str = String.valueOf(num);
  • int + ""

 

정수형배열int[]와 Integer[]

정수형배열int[]을 Integer[]로 변환

  • Integer array[] = Arrays.stream(numArray).boxed().toArray(Integer[]::new);

Integer[]을 정수형배열int[]로 변환

  • int numArray[] = Arrays.stream(array).mapToInt(Integer::intValue).toArray();
  • int numArray[] = Arrays.stream(array).mapToInt(i→i).toArray();

 

 

정수형int와 정수형배열int[]

정수형int를 정수형배열int[]로 변환

1) for문을 이용하는 방식 :  10의 배수를 이용. 자리수를 구한 후 for문을 이용(1자리 수부터 거꾸로 계산)

 

2) Stream을 이용하는 방식

  • split을 이용하기 위해 String으로 변환
    • String[] arr = String.valueOf(n).split("");
  • mapToInt를 이용하여 int[]로 변환하기 위해 Stream<String>으로 변환
    • Stream<String> arr2 = Arrays.stream(arr); 
    • int[] num = arr2.mapToInt(Integer::parseInt).toArray();
  • 한줄로 표현가능 : int[] num = Stream.of(String.valueOf(n).split("")).mapToInt(Integer::parseInt).toArray();

 

정수형배열int[]를 정수형int로 변환

String[]으로 변환 후 join을 이용해서 합치고 다시 int로 변환