------------------------------------------------------------------------------
뉴스제공시각 : 02/01 00:00 출처 : 마이크로
제목 : 자바프로그래밍[2]/자바의 데이터형과 변수 (4)
-----------------------------------------------------------------------------
문자열(String)
C/C++에서 문자열은 char형의 배열이었다. 하지만 자바에서는 조금 다르다. 자바에
서 문자열은 String이라는 클래스의 인스턴스들이다. 따옴표 등 C/C++에서와 동일
한 형식으로 문자열을 사용할 수 있도록 자바에서 지원하고는 있고 문자열을 합칠
수 있도록 '+' 연산자를 제공하고 있지만, 그 사실을 제외하고는 다른 여타
클래스와
전혀 틀릴 바가 없다. 특별 대우받는 클래스라고 하면 될까?
한 가지 더 놀라운 사실은 String 객체는 내용을 수정할 수 없는 객체라는 점이다.
상수와 같다. 이런 까닭에 StringBuffer라는 클래스가 별도로 제공된다. 처음 자바
프로그래밍을 할 때 제일 당혹스러운 것중 하나가 이 문자열이 C/C++와 상이하다는
점이다. 배열이 아니라서 지금까지 배운 지식으로 문자열을 다루는 것은 턱도 없는
일이다. 이들 클래스에 대해서는 다음에 별도로 다루기로 하겠다.
참고로 지금까지 예제에서 사용한 '+' 연산자는 문자열끼리 이어 새로운 문자열 객체
를 만들어 내는 연산자이다. 이 연산자는 대상중 어느 한쪽이 문자열이기만 하면 사
용할 수 있으며, 문자열이 아닌 데이터는 자동으로 문자열로 변환해 준다. 이 때 사
용되는 것들이 각 클래스에 정의된 toString() 메쏘드이다. 자바 컴파일러는
내부적으
로 toString() 메쏘드를 사용해서 '+' 연산자를 구현한다. int와 같은 기본
데이터형은
각 데이터형에 해당하는 특별한 클래스인 Integer, Character 등의 클래스에
정의되
어 있는 toString() 메쏘드를 사용하여 문자열로 변환된다.
필자 연락처 : dynaxis@dice.postech.ac.kr
정리 : 박은숙
참고자료
① Kathleen Jensen and Niklaus Wirth, "Pascal User Manual and Report,"
4th Ed., 1991, Springer-Verlag New York, Inc., pp.10
② 월간 마이크로소프트웨어 1996년 12월호 pp. 296-306, "자바에서의 한글
구현과 그 해결책"
③ Bjarne Stroustrup, "The C++ Programming Language," 2nd Ed.
Addison-Wesley, 1991
④James Gosling, Bill Joy, and Guy Steele, "The Java Language
Specification," Addison-Wesley, 1996
⑤Richard S. Wiener and Lewis J. Pinson, "An Introduction to
Object-Oriented Programming and C++," Addison-Wesley, 1988
⑥Richard S. Wiener and Lewis J. Pinson, "An Introduction to
Object-Oriented Programming and Smalltalk," Addison-Wesley, 1988
⑦ Tim Lindholm and Frank Yellin, "The Java Virtual Machine
Specification," Addison-Wesley, 1996
⑧ Ken Arnold and James Gosling, "The Java Programming Language,"
Addison-Wesley, 1996
⑨ Mary Campione and Kathy Walrath, "The Java Tuturial,
Object-Oriented Programming for the Internet," Addision-Wesley, 1996
이달의 숙제
지금까지 배운 지식을 활용해서 세모꼴로 생긴 2차원 배열을 구현하는 것이 가능하
다.
논리적으로 위와 같은 형태의 배열의 기능을 하는 배열을 선언해서 초기화 해
보자.
당연하지만 C/C++, 파스칼과 같은 언어에서는 위와 같은 배열을 만드는 것이 불가능
하다.