Programming/JAVA

[Java 자바] 문자배열을 문자열로 출력하기(Char[] -> String) / String.valueOf( )와 Arrays.toString( )의 차이

꼬ㄴi 2023. 8. 18. 14:03

🚀 정리 계기

- 배열 요소의 값만 확인하는 목적으로 Arrays.toString(  ) 메소드를 이용한 문자열 형변환을 해왔음
- 형변환 후, 인덱싱이 필요한 상황이었음 👉 습관처럼 형변환 후, 인덱스를 찾았는데 예상과 다른 값이 return됨
- 문자열 변환도 메소드에 따라 "형태" 가 다른 걸 알게 됨

 


🚋 Arrays.toString(  )

- java.util.Arrays 클래스의 메서드

- 문자열로 변환할 때, 배열 모양 그대로 나온다

- 따라서 배열의 요소를 한 눈에 확인 가능

char[] arr = {'0', '1', '2', '3'};

System.out.println(Arrays.toString(arr));

출력 👉 [0, 1, 2, 3]

배열의 요소뿐 아니라 [ 와 , 도 문자열의 요소로 들어간다.

0번~11번, 총 12개의 문자로 구성되어 있는 문자열임을 알 수 있다


🚋 String.valueOf(  )

- java.lang.String 클래스 메서드

- 요소값들이 나열된 형태의 문자열

char[] arrNum = {'0', '1', '2', '3'};

System.out.println(String.valueOf(arrNum));

출력 👉 0123

Arrays.toString(  )과 달리 오로지 배열의 요소들만 뽑아서 나열한다.

 


❔두 메서드 비교해보기

- 두 메서드를 사용해 각각 문자열로 변환한 후,

   문자열의 길이 / '3' 문자가 처음 나오는 인덱스를 비교해본다.

char[] arrX = {0, 1, 3, 3};
char[] arrY = {0, 1, 3, 3};

X = Arrays.toString(arrX);	//  X = [0, 1, 3, 3]
Y = String.valueOf(arrY);	//  Y = 0133

# indexOf ( '문자', n )

  :  인덱스 찾는 메서드.  n번 인덱스 이후에 '문자'가 처음 나오는 인덱스를 return

System.out.println(X.indexOf('3', 2));
System.out.println(Y.indexOf('3', 2));

X 출력 👉 7

Y 출력 👉 2

 

# length(  )

 :  문자열 길이를 return

System.out.println(X.length());
System.out.println(Y.length());

X 출력 👉 12

Y 출력 👉 4