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 이상을 사용한다면 더욱 다양한 방법이 있습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)