『자바의 신 3판』 을 읽고 내용 정리 및 공부한 내용을 정리한 글입니다.
서적: 자바의 신 3판 구입처
이 장은 자바의 신 3판 2권의 내용을 요약하여 정리한 내용이다. 따라서 마지막의 <기말고사> 질문만 정리했다.
💡 정답은 관련 장 참고
Me: 시스템과 같은 각종 정보를 확인할 수 있도록 하는 클래스이다.
Me: gc() 메소드와 exit() 메소드가 있다. gc는 JVM이 자동으로 수행해주는 것이기도 하고, 강제로 GC를 수행하려고 하면 시스템들이 작업을 멈추고 이 작읍을 실행한다. exit() 메소드는 실행하면 프로그램이 종료된다. 즉, 웹과 같이 실시간으로 기능을 제공해줘야 하는 프로그램에서는 사용하면 안된다.
Me: 컴파일 시에 형 변환 관련 오류들을 잡기 위해 사용한다.
Me: Set은 순서가 중요하지 않고, 중복이 없는 경우 사용한다. HashSet이나 TreeSet 등의 클래스가 있다.
Me: 보통 iterator를 돌면서 데이터를 하나씩 꺼내온다.
Me: 가장 큰 차이는 메모리를 동적으로 설정할 수 있느냐가 있다. 배열은 선언 시 공간의 크기를 초기화해주어야 사용 가능하다. 하지만 List는 크기를 할당하지 않아도 사용할 수 있으며, 사용하다가 요소가 기본값인 10개를 넘어서면 자동으로 크기를 늘려준다.
Me: Queue는 가장 먼저 들어온 것이 가장 먼저 나가는 구조이다. LinkedList는 List와 Queue를 동시에 구현한 클래스로, 앞의 요소와 뒤의 요소를 연결해놓은 구조이다. 즉, 중간에 있는 값이 지속적으로 삭제되거나 추가될 경우 효율적이다.
Me: Map은 key-value로 이루어진 구조로, key로 value를 조회할 수 있다. HashMap, TreeMap 등이 있다.
Me: 배열을 다루기 위한 메소드를 제공한다.
Me: 지정한 구분자로 문자열(String)을 자른다.
Me: public void run()
Me: Thread 클래스를 확장하면 바로 start() 메소드로 실행시키면 되고, Runnable 인터페이스를 구현했다면 Thead 객체로 생성한 후 start 메소드를 호출한다.
Me: 여러 쓰레드가 동시에 한 자원에 접근하려고 할 때 발생할 수 있는 동시성 이슈를 해결하기 위한 방법 중 하나이다. 메소드 앞에 쓰면, 한 번에 하나의 쓰레드만 메소드를 실행할 수 있다. 메소드 내부에 synchronized(lock)으로 객체로 lock을 걸어서 블록 단위로 접근을 제한할 수도 있다.
Me: 파일을 읽을 때 사용하는 클래스로, 스트림 기반의 클래스이다. char 기반의 파일을 읽는 Reader 클래스와는 다르게 byte 기반의 파일을 읽어올 때 사용한다.
Me: 객체를 외부로 전송하거나 저장하고 읽어올 때 Serializable 인터페이스를 필수로 구현해야 한다.
Me: transient 로 선언한 변수는 저장되지 않는다. 주로 패스워드와 같이 공유되면 안되는 변수에 사용한다.
Me: Socket 클래스를 사용하여 데이터를 주고 받는다.
Me: Datagram 클래스를 사용하여 데이터를 주고 받는다.