자바의 신 마무리(1) - String, Collection, System

jj J·2022년 12월 5일
1

JAVA

목록 보기
11/15

드디어 이번주면 자바의 신 1,2권 멘토링이 마무리 된다.

지금까지 열심히 공부해왔던 자바의 신 책 마지막에 기말고사가 있어 이를 스스로 정리해보고자 한다.

1. String 클래스와 StringBuilder, StringBuffer 클래스의 차이

  • 불변이냐 아니냐의 차이, String은 불면의 속성을 가져, 값이 바뀌면 새로운 인스턴스가 생성되고 StringBuilder와 StringBuffer는 그렇지 않다.
  • 따라서, 변하지 않는 문자열을 자주 읽어들일 경우 String을 사용하면 좋다.
    하지만, 문자열 추가, 수정 등의 연산이 자주 일어나게 될 경우 값이 바뀌어도 하나의 인스턴스로 처리하는 StringBuilder와 StringBuffer를 사용하면 좋다.
  • StringBuilder와 StringBuffer 간에도 차이점이 있는데, Thread safe 유무이다.
    StringBuffer는 주요 로직이 synchronized로 감싸져있어 Thread safe하지만, StringBuilder는 그렇지 않기에 Thread Safe하지 않다.

2. String 클래스의 indexOf(), substring(), split(), getBytes()의 용도

  • indexOf : 특정 문자의 위치 인덱스 반환
  • substring : 문자열을 인덱스 기준으로 잘라서 반환
  • split : 문자열을 특정 문자열 기준으로 분리해 반환
  • getBytes : 문자열을 ByteCode로 인코딩해 반환

3. System 클래스의 주요 용도

  • 시스템에 대한 정보를 확인하는 클래스

4. System 클래스에서 절대 사용하면 안되는 메서드와 이유

  • GC를 수행하는 gc(), runFinalization()과 JVM 종료하는 exit() 메서드
  • GC 관련된 작업들은 명시적으로 호출하지 않아도, JVM에서 알아서 한다.
  • JVM 종료 또한 명시적으로 호출할 필요가 없고, 하면 해당 애플리케이션이 죽어버린다.

5. 제네릭을 사용하는 가장 큰 이유

  • 컴파일 시점에 형 변환으로 인한 문제를 사전에 검사하기 위함

6. Set의 용도와 주요 클래스

  • 순서 보장이 필요없고, 중복을 방지하고 원하는 값이 포함되어 있는지 확인이 필요한 경우 사용함
  • 주요 클래스는 HashSet, TreeSet 등이 있다.

7. Set의 데이터를 하나씩 꺼내는 방법

  • iterator 객체를 생성해 next 호출, 또는 for each사용

8. ArrayList와 같은 List와 배열의 차이

  • List는 데이터를 저장하는 공간이 꽉차면 가변적으로 증가시켜서 사이즈 지정이 필요없지만, 배열은 사이즈가 고정적이다.

9. Queue의 용도, LinkedList의 특징

  • Queue : 순서대로 처리할 필요가 있을 경우 사용함
  • LinkedList : 자료 저장을 위해 공간을 미리 할당하지 않고, 추가 필요 시 현재 노드와 새 노드간의 Link(주소)만 할당해 자료를 추가함. 현재 노드는 앞과 뒤에 있는 노드의 위치(주소)만 알고 있음

10. Map의 용도와 주요 클래스

  • 자료를 키와 값을 쌍으로 관리해야할 때 사용함. 이때 키는 중복 불가(hash 사용)
  • 주요클래스는 HashMap, TreeMap 등이 있다.

11. Arrays 클래스의 용도

  • 배열을 다루기 위한 다양한 메서드들이 포함되어 있음
  • copyOf, sort 등

12. StringTokenizer 클래스의 용도

  • split과 유사하게 문자열 파싱할 때 사용함, 정규표현식으로 파싱함
profile
매일 발전

0개의 댓글