일반 다섯째날 - Collection, String, StringBuffer

황제낙엽 2003.04.14 13:08 조회 수 : 562 추천:161

sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  
23. 자바의 클래스들

- 객체 및 데이터형 : Object클래스, Wrapper클래스

- 문자열 : String클래스, StringBuffer클래스, StringTokenizer클래스

- 데이터구조 : Vector클래스, Hashtable클래스

- 기능 : Calendar클래스, Random클래스



24. java.lang.Object클래스 (교재 231page)

- 모든 클래스의 최상위 클래스


25. Wrapper클래스 (교재 236page)

- 기본데이터형(int,char...)을 클래스화 시켜준다.


26. java.lang.String클래스 (교재 239page)

- 자바가상머신에 의해 내부의 문자열 저장소에 문자열을 저장하고 관리한다.

- 저장시 이미 같은 문자열이 존재한다면 그 주소값을 공유하게 된다.

- new연산자를 사용하지 않고도 선언만으로 객체 생성을 한다. (내부적으로는 new연산)

   ex) String str1="abc"; (명시적)  ====>  String str1= new String("abc"); (내부적)

- String strNull=new String(); 과 String strNull="";은 같은 명령이지만 String strNull;은 변수 초기화에

   의한 초기화가 되지 않고 자동으로 진짜 NULL값이 들어가게 된다. 이런 경우는 컴파일시 문제를 일으킨다.

- String변수의 값을 수정하면, 가상머신은 수정된 값으로 새롭게 메모리 할당을 하고 기존의 값은 유지한다. (교재 240page)
   만일 String a="abc"; 이고 바로 밑에 String b="abc";한다면 a와 b는 같은 메모리주소를 참조하는 다른 레퍼런스이다.
하지만, b=b.replace('a','d');하여 b의 값을 변화시킨다면 가상머신은 "dbc"를 위한 메모리공간을 새롭게 확보하고 레퍼런스 b로 참조할 수 있게 한다. 그래서 a와 b가 완전한 독립을 이루게 된다.


27. java.lang.StringBuffer클래스 (교재 244page)

- 메모리상에서 문자열을 처리한다 (속도가 빠르다)

- String은 call by value로 값을 넘겨주고 String buffer는 call by reference로 값을 넘겨준다. (Stringbuffer의 값을 제어하려면 Stringbuffer의 메소드를 이용해야 한다.)

- String.replace()메소드는 원본값은 절대 수정하지 않는다. 반대로 Stringbuffer에서는 메소드에 의한 원본의 수정이 이루어진다.



28. java.util.StringTokenizer클래스 (교재 247page)

- 문자열을 어떠한 규칙에 의해 나눠지는 최소한의 단위를 토큰이라 한다. ex) 2002-04-16 ===> 2002,04,16으로 나눈다면 "-"를 토큰으로 간주할 수 있다.

- 첫번째 생성자 : StringTokenizer(String str) : 토큰의 단위는 스페이스바이다 ex)위의 예제에서는 토큰은 하나...(스페이스바가 없으므로)

- 두번째 생성자 : StringTokenizer(String str, String delim) : 기준문자를 토큰으로 간주한다. ex)3을 넘겨준다면 "-"의 바로 앞까지를 한 토큰으로 간주하여 "-"이 토큰 기준이 된다

- 세번째 생성자 : StringTokenizer(String str, String delim, boolean returnDelims)  : "-"또한 토큰의 한 단위로 인식한다


29. java.util.Vector (교재 250page)

- 배열은 반드시 같은 타입의 데이터 공간을 할당하지만 벡터는 저장공간의 개개가 서로다른 클래스타입으로 저장할 수 있다.

- 배열은 한번 생성되면 배열의 크기가 고정되어있지만 벡터는 공간이 초과시 자동으로 새로운 공간을 할당하여 저장한다.

- 하지만 벡터에는 기본데이터타입을 저장하지는 못하고 객체의 레퍼런스만 가능...

- 벡터에 저장된 타입은 Object이기 때문에 다른 타입들의 Object를 얻어올때 형변환을 시켜줘야 한다.(252page참고)


30. java.util.Calendar (교재 263page)


31. java.util.Random (교재 265page)



※ Set, List, Map
  Set : 데이터의 순서는 상관없으나 데이터가 중복될 수는 없음 (HashSet, TreeSet)
          natural order and no duplicate => sorted set
  List : 데이터의 중복은 허용하지만 순서에 맞춤 (ArrayList, LinkedList, Vector)
  Map : 데이터마다 할당된 키값이 존재하여 키값은 중복안됨(HashMap, TreeMap, HashTable)



오늘의 예제 :: [5]