29장. 이제 주요 API도 알아봤으니 정리해 봅시다.

공부하는 감자·2023년 12월 28일
0

자바의 신 3판

목록 보기
29/30

들어가기 전

『자바의 신 3판』 을 읽고 내용 정리 및 공부한 내용을 정리한 글입니다.
서적: 자바의 신 3판 구입처

내용 정리

이 장은 자바의 신 3판 2권의 내용을 요약하여 정리한 내용이다. 따라서 마지막의 <기말고사> 질문만 정리했다.

정리해 봅시다.

💡 정답은 관련 장 참고

Q. System 클래스의 주요 용도를 정리해 주세요.

Me: 시스템과 같은 각종 정보를 확인할 수 있도록 하는 클래스이다.

Q. System 클래스에서 여러분들이 절대로 사용해서는 안되는 메소드들은 무엇이고, 그 이유를 정리해 주세요.

Me: gc() 메소드와 exit() 메소드가 있다. gc는 JVM이 자동으로 수행해주는 것이기도 하고, 강제로 GC를 수행하려고 하면 시스템들이 작업을 멈추고 이 작읍을 실행한다. exit() 메소드는 실행하면 프로그램이 종료된다. 즉, 웹과 같이 실시간으로 기능을 제공해줘야 하는 프로그램에서는 사용하면 안된다.

Q. 제네릭을 사용하는 가장 큰 이유는 무엇인지 정리해 주세요.

Me: 컴파일 시에 형 변환 관련 오류들을 잡기 위해 사용한다.

Q. Set 의 용도와 주요 클래스를 정리해 주세요.

Me: Set은 순서가 중요하지 않고, 중복이 없는 경우 사용한다. HashSet이나 TreeSet 등의 클래스가 있다.

Q. Set의 데이터를 하나씩 꺼내는 방법을 정리해 주세요.

Me: 보통 iterator를 돌면서 데이터를 하나씩 꺼내온다.

Q. ArrayList와 같은 List와 배열의 차이가 무엇인지 정리해 주세요.

Me: 가장 큰 차이는 메모리를 동적으로 설정할 수 있느냐가 있다. 배열은 선언 시 공간의 크기를 초기화해주어야 사용 가능하다. 하지만 List는 크기를 할당하지 않아도 사용할 수 있으며, 사용하다가 요소가 기본값인 10개를 넘어서면 자동으로 크기를 늘려준다.

Q. Queue 의 용도는 무엇이며, LinkedList 의 특징이 무엇인지 정리해 주세요.

Me: Queue는 가장 먼저 들어온 것이 가장 먼저 나가는 구조이다. LinkedList는 List와 Queue를 동시에 구현한 클래스로, 앞의 요소와 뒤의 요소를 연결해놓은 구조이다. 즉, 중간에 있는 값이 지속적으로 삭제되거나 추가될 경우 효율적이다.

Q. Map의 용도와 주요 클래스를 정리해 주세요.

Me: Map은 key-value로 이루어진 구조로, key로 value를 조회할 수 있다. HashMap, TreeMap 등이 있다.

Q. Arrays 클래스의 주요 용도는 무엇인지 정리해 주세요.

Me: 배열을 다루기 위한 메소드를 제공한다.

Q. StringTokenizer 클래스의 용도는 무엇인지 정리해 주세요.

Me: 지정한 구분자로 문자열(String)을 자른다.

Q. Thread 클래스를 확장한 클래스를 구현할 때 항상 만들어야 하는 메소드는 무엇인가요? 접근 제어자, 리턴타입, 메소드 이름까지 적어 주세요.

Me: public void run()

Q. Thread 클래스와 Runnable 인터페이스를 구현하여 만든 쓰레드를 실행하려면 각각 어떻게 해야하는지 정리해 주세요.

Me: Thread 클래스를 확장하면 바로 start() 메소드로 실행시키면 되고, Runnable 인터페이스를 구현했다면 Thead 객체로 생성한 후 start 메소드를 호출한다.

Q. Synchronized 에 대해서 정리해 주세요.

Me: 여러 쓰레드가 동시에 한 자원에 접근하려고 할 때 발생할 수 있는 동시성 이슈를 해결하기 위한 방법 중 하나이다. 메소드 앞에 쓰면, 한 번에 하나의 쓰레드만 메소드를 실행할 수 있다. 메소드 내부에 synchronized(lock)으로 객체로 lock을 걸어서 블록 단위로 접근을 제한할 수도 있다.

Q. InputStream 클래스의 용도는 무엇이고, Reader클래스와 어떤 점이 다른지 정리해 주세요.

Me: 파일을 읽을 때 사용하는 클래스로, 스트림 기반의 클래스이다. char 기반의 파일을 읽는 Reader 클래스와는 다르게 byte 기반의 파일을 읽어올 때 사용한다.

Q. 클래스 선언시 Serializable 을 구현하는 이유는 무엇인지 정리해 주세요.

Me: 객체를 외부로 전송하거나 저장하고 읽어올 때 Serializable 인터페이스를 필수로 구현해야 한다.

Q. transient 로 선언한 변수는 다른 변수와 어떻게 다른지 정리해 주세요.

Me: transient 로 선언한 변수는 저장되지 않는다. 주로 패스워드와 같이 공유되면 안되는 변수에 사용한다.

Q. TCP 통신을 처리하기 위해서 사용하는 클래스는 무엇인지 정리해 주세요.

Me: Socket 클래스를 사용하여 데이터를 주고 받는다.

Q. UDP 통신을 처리하기 위해서 사용하는 클래스는 무엇인지 정리해 주세요.

Me: Datagram 클래스를 사용하여 데이터를 주고 받는다.

profile
책을 읽거나 강의를 들으며 공부한 내용을 정리합니다. 가끔 개발하는데 있었던 이슈도 올립니다.

0개의 댓글