java split() 메소드 리턴타입 질문
조회수 1394회
안녕하세요. 자바에서 split() 메소드를 사용하려고 하는데요.
Scanner reader = new Scanner(System.in);
String inputValue = reader.nextLine();
System.out.println(inputValue); //5,6,7
String[] splitedValue = inputValue.split(",");
System.out.println(splitedValue); //[Ljava.lang.String;@b97c004
System.out.println(splitedValue[0]); // 5
문자열을 받은다음에 쉼표를 기준으로 값을 담으려고 하였습니다. 파이썬의 경우 tempList 를 출력하면 쉼표에 맞게 분리된 리스트가 출력이 되는데요.
temp = "4,5,6"
tempList = temp.split(",")
print(tempList) // ['4', '5', '6']
마찬가지 과정을 java에서 하려고 splitedValue에 무엇이 담기나 확인해보려고 출력을 해보니
Ljava.lang.String;@b97c004
를 출력을 하는데요. 구글링을 조금 해보니 이것은 splitedValue가 문자열 배열 type이라는것을 의미하는것같은데요..
https://coderanch.com/t/327283/java/class-Ljava-lang-String
질문 1) 저는 변수를 출력했는데, 왜 변수의 타입을 출력한 것인가요?
질문 3) 아래의 코드에서 배열을 출력하면 @뒤에 있는 숫자가 주소라고 하는데요. 왜 이런값을 출력하는 것인가요?
int[] intArr = {5,6};
String[] strArr = {"a","b"};
System.out.println(intArr); // [I@506e6d5e
System.out.println(strArr); //[Ljava.lang.String;@2acf57e3
질문 2) 파이썬의 방식처럼 ['4', '5', '6'] 을 출력하기 위해서는 무엇을 해야하나요 ?
자답
import java.util.Arrays;
System.out.println(Arrays.toString( splitedValue));
와 같이 toString() 메소드를 사용하면 되네요.
질문 읽어주셔서 감사합니다! :)
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
질문1)
자바의 배열은 최상위 클래스로 불리는 Object 클래스의 toString() 메서드를 사용하도록 되어있습니다.
일반적으로 클래스를 생성하면 toString() 메서드를 오버라이드하여 사용합니다.Object.class
public String toString() { return getClass().getName()+"@"+Integer.toHexString(hashCode()); }
L: 1차원 배열
타입 : java.lang.String;
구분자 : @
16진수의 해시값: b97c004
질문2)
여러가지 방법이 있는데,
가장 기본적으로 반복문 for , for each 와 Arrays 클래스의 toString() 을 사용하는 방법이 있고 자바8 이상을 사용한다면 더욱 다양한 방법이 있습니다.
댓글 입력