본문 바로가기

프로그래밍/자바(JAVA)

[자바 질문] 자바배열에 관해서 질문이 있습니다.

자바배열에 관해서 질문이 있습니다.


import java.util.StringTokenizer;

public class StringToken {
 public static void main(String[] args) {

  String text = "To be or not to be";
  //StringTokenizer st = new StringTokenizer(text);
  StringTokenizer sa = new StringTokenizer(text, " ");  

  String[] subStr = new String[sa.countTokens()];   

System.out.println(subStr);
  for (int i=0; i<subStr.length ; i++ ) {        

   subStr[i] = sa.nextToken();          
   System.out.println(sa.nextToken());
  }

  for (int i=0; i<subStr.length ; i++ ) {
   System.out.println(subStr[i]);
  }
 }
};

 

위 와 같이 코딩을 하고 안에 든 값들을 확인 하고 있습니다.

그런데  위에서 subStr 의 값이 [Ljava.lang.String;@35ce36 이렇게 출력이 됩니다.

subStr의 값의 뜻이 뭔가요 배열의 위치를 가리키는건가요?


답변


자바에서는 배열도 객체로 취급이 됩니다.

즉 subStr 이라는 녀석도 String객체 참보 변수를 가지고 있는 집합이라고 생각을 하시면 됩니다.

 

자바에서는 참조변수의 값을 출력하려고 하면 Object의 toString() 메소드를 자동으로 호출합니다.

 

출력된 값 Ljava.lang.String;@35ce36  이렇게 되어 있는데 이것은 toString() 메소드에 정의된

클래스이름@해쉬코드 형태로 출력된 것입니다. 배열의 위치를 나타내는 값은 아닌게 되지요.

 

안에 든 값을 출력하고 싶으시다면

반복문을 통해서 출력을 하셔야 합니다.

 

for(String str : subStr){

  System.out.println("str = "+str);

}

 

위와 같이 JDK5.0에서 추가된 향상된 for문으로 출력을 하셔도 됩니다.