자바배열에 관해서 질문이 있습니다.
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문으로 출력을 하셔도 됩니다.
'프로그래밍 > 자바(JAVA)' 카테고리의 다른 글
[자바] 유클리드 알고리즘(최대공약수 찾기) (2) | 2012.05.10 |
---|---|
[자바] 프로그래머의 십계명 (0) | 2012.05.10 |
[자바] 달력프로그램 알고리즘에 대해.. (2) | 2012.05.10 |
[자바/JAVA]자바 성적 관리 프로그램 인데요.. 주석좀 달아서 설명해주세요..ㅠ (1) | 2012.05.10 |
[자바 질문] 자바 문제좀 풀어주세요!! (0) | 2012.05.09 |
[자바 질문] 자바 가비지 콜렉션 질문드립니다. (0) | 2012.05.09 |
[자바/JAVA] 자바 - 피라미드 만들기 + 모래시계 만들기 소스 (0) | 2012.05.04 |
[자바/JAVA] 자바 한글형태의 숫자를 숫자로 바꾸기 (0) | 2012.05.04 |
[자바/JAVA] 자바 달력만들기 (0) | 2012.05.04 |