최신 JAVA 21 버전 반영!
9년 동안 꾸준히 사랑받은 자바 베스트셀러, 『이것이 자바다』 3판!
2015년 초판이 발간된 이후 『이것이 자바다』는 명실상부한 자바의 교과서, 자바의 바이블로 큰 사랑을 받아왔다. 기본에 충실하면서도 개념 하나하나를 놓치지 않는 저자의 꼼꼼한 설명은 많은 독자를 훌륭한 개발자로 성장하게 했다. 이번에 개정된 『이것이 자바다(3판)』은 최신 자바 21 LTS 버전을 기반으로 기존 내용을 보강했으며, 자바 LTS 버전별 경향과 특징을 반영하여 자바를 활용한 객체지향 프로그래밍의 모든 과정을 친절하게 안내한다.
이 책은 자바 언어의 기초부터 다양한 자바 프로그래밍 기법까지 그림을 통해 체계적으로 설명한다. 또한 900개의 실전 예제를 따라 하면서 충분히 연습할 수 있도록 구성했다. 책을 완독하고 나면 코드만 보고도 자바의 구조와 실행 흐름을 머릿속으로 그려 내는 자신의 모습을 발견할 수 있을 것이다.
Contents
PART 01 자바 언어의 기초 Chapter 01 자바 시작하기
1.1 프로그래밍 언어와 자바
1.2 운영체제별 JDK 설치
1.3 운영체제별 환경 변수 설정
1.4 바이트코드 파일과 자바 가상 머신
1.5 소스 작성부터 실행까지
1.6 이클립스 설치
1.7 이클립스 프로젝트 생성
1.8 이클립스 소스 작성부터 실행까지
1.9 코드 용어 이해
1.10 코드 주석 달기
1.11 실행문과 세미콜론
확인문제
Chapter 02 변수와 타입
2.1 변수 선언
2.2 정수 타입
2.3 문자 타입
2.4 실수 타입
2.5 논리 타입
2.6 문자열 타입
2.7 자동 타입 변환
2.8 강제 타입 변환
2.9 연산식에서 자동 타입 변환
2.10 문자열을 기본 타입으로 변환
2.11 변수 사용 범위
2.12 콘솔로 변수값 출력
2.13 키보드 입력 데이터를 변수에 저장
확인문제
Chapter 03 연산자
3.1 부호/증감 연산자
3.2 산술 연산자
3.3 오버플로우와 언더플로우
3.4 정확한 계산은 정수 연산으로
3.5 나눗셈 연산 후 NaN과 Infinity 처리
3.6 비교 연산자
3.7 논리 연산자
3.8 비트 논리 연산자
3.9 비트 이동 연산자
3.10 대입 연산자
3.11 삼항(조건) 연산자
3.12 연산의 방향과 우선순위
확인문제
Chapter 04 조건문과 반복문
4.1 코드 실행 흐름 제어
4.2 if 문
4.3 switch 문
4.4 for 문
4.5 while 문
4.6 do-while 문
4.7 break 문
4.8 continue 문
확인문제
PART 02 객체지향 프로그래밍 Chapter 05 참조 타입
5.1 데이터 타입 분류
5.2 메모리 사용 영역
5.3 참조 타입 변수의 ==, != 연산
5.4 null과 NullPointerException
5.5 문자열(String) 타입
5.6 배열(Array) 타입
5.7 다차원 배열
5.8 객체를 참조하는 배열
5.9 배열 복사
5.10 배열 항목 반복을 위한 향상된 for 문
5.11 main( ) 메소드의 String[ ] 매개변수 용도
5.12 열거(Enum) 타입
확인문제
Chapter 06 클래스
6.1 객체지향 프로그래밍
6.2 객체와 클래스
6.3 클래스 선언
6.4 객체 생성과 클래스 변수
6.5 클래스의 구성 멤버
6.6 필드 선언과 사용
6.7 생성자 선언과 호출
6.8 메소드 선언과 호출
6.9 인스턴스 멤버
6.10 정적 멤버
6.11 final 필드와 상수
6.12 패키지
6.13 접근 제한자
6.14 Getter와 Setter
6.15 싱글톤 패턴
확인문제
Chapter 07 상속
7.1 상속 개념
7.2 클래스 상속
7.3 부모 생성자 호출
7.4 메소드 재정의
7.5 final 클래스와 final 메소드
7.6 protected 접근 제한자
7.7 타입 변환
7.8 다형성
7.9 객체 타입 확인
7.10 추상 클래스
7.11 봉인된 클래스
확인문제
Chapter 08 인터페이스
8.1 인터페이스의 역할
8.2 인터페이스와 구현 클래스 선언
8.3 상수 필드
8.4 추상 메소드
8.5 디폴트 메소드
8.6 정적 메소드
8.7 private 메소드
8.8 다중 인터페이스 구현
8.9 인터페이스 상속
8.10 타입 변환
8.11 다형성
8.12 객체 타입 확인
8.13 봉인된 인터페이스
확인문제
Chapter 09 중첩 선언과 익명 객체
9.1 중첩 클래스
9.2 인스턴스 멤버 클래스
9.3 정적 멤버 클래스
9.4 로컬 클래스
9.5 바깥 멤버 접근
9.6 중첩 인터페이스
9.7 익명 객체
확인문제
Chapter 10 라이브러리와 모듈
10.1 라이브러리
10.2 모듈
10.3 응용프로그램 모듈화
10.4 모듈 배포용 JAR 파일
10.5 패키지 은닉
10.6 전이 의존
10.7 집합 모듈
10.8 리플렉션 허용
10.9 자바 표준 모듈
확인문제
Chapter 11 예외 처리
11.1 예외와 예외 클래스
11.2 예외 처리 코드
11.3 예외 종류에 따른 처리
11.4 리소스 자동 닫기
11.5 예외 떠넘기기
11.6 사용자 정의 예외
확인문제
찾아보기
PART 03 라이브러리 활용 Chapter 12 java.base 모듈
12.1 API 도큐먼트
12.2 java.base 모듈
12.3 Object 클래스
12.4 System 클래스
12.5 문자열 클래스
12.6 포장 클래스
12.7 수학 클래스
12.8 날짜와 시간 클래스
12.9 형식 클래스
12.10 정규 표현식 클래스
12.11 리플렉션
12.12 어노테이션
확인문제
Chapter 13 제네릭
13.1 제네릭이란?
13.2 제네릭 타입
13.3 제네릭 메소드
13.4 제한된 타입 파라미터
13.5 와일드카드 타입 파라미터
확인문제
Chapter 14 멀티 스레드
14.1 멀티 스레드 개념
14.2 메인 스레드
14.3 작업 스레드 생성과 실행
14.4 스레드 이름
14.5 스레드 상태
14.6 스레드 동기화
14.7 스레드 안전 종료
14.8 데몬 스레드
14.9 스레드풀
확인문제
Chapter 15 컬렉션 자료구조
15.1 컬렉션 프레임워크
15.2 List 컬렉션
15.3 Set 컬렉션
15.4 Map 컬렉션
15.5 검색 기능을 강화시킨 컬렉션
15.6 LIFO와 FIFO 컬렉션
15.7 동기화된 컬렉션
15.8 수정할 수 없는 컬렉션
확인문제
Chapter 16 람다식
16.1 람다식이란?
16.2 매개변수가 없는 람다식
16.3 매개변수가 있는 람다식
16.4 리턴값이 있는 람다식
16.5 메소드 참조
16.6 생성자 참조
확인문제
Chapter 17 스트림 요소 처리
17.1 스트림이란?
17.2 내부 반복자
17.3 중간 처리와 최종 처리
17.4 리소스로부터 스트림 얻기
17.5 요소 걸러내기(필터링)
17.6 요소 변환(매핑)
17.7 요소 정렬
17.8 요소를 하나씩 처리(루핑)
17.9 요소 조건 만족 여부(매칭)
17.10 요소 기본 집계
17.11 요소 커스텀 집계
17.12 요소 수집
17.13 요소 병렬 처리
확인문제
PART 04 데이터 입출력 Chapter 18 스트림 요소 처리
18.1 입출력 스트림
18.2 바이트 출력 스트림
18.3 바이트 입력 스트림
18.4 문자 입출력 스트림
18.5 보조 스트림
18.6 문자 변환 스트림
18.7 성능 향상 스트림
18.8 기본 타입 스트림
18.9 프린트 스트림
18.10 객체 스트림
18.11 File과 Files 클래스
확인문제
Chapter 19 네트워크 입출력
19.1 네트워크 기초
19.2 IP 주소 얻기
19.3 TCP 네트워킹
19.4 UDP 네트워킹
19.5 서버의 동시 요청 처리
19.6 JSON 데이터 형식
19.7 TCP 채팅 프로그램
확인문제
Chapter 20 데이터베이스 입출력
20.1 JDBC 개요
20.2 DBMS 설치
20.3 Client Tool 설치
20.4 DB 구성
20.5 DB 연결
20.6 데이터 저장
20.7 데이터 수정
20.8 데이터 삭제
20.9 데이터 읽기
20.10 프로시저와 함수 호출
20.11 트랜잭션 처리
20.12 게시판 구현
확인문제
PART 05 최신 자바의 강화된 언어 기능 Chapter 21 자바 21에서 강화된 언어 및 라이브러리
21.1 자바 21 버전에서 강화된 내용
21.2 로컬(지역) 변수 타입 추론
21.3 switch 문의 null 처리
21.4 switch 문의 패턴 매칭
21.5 레코드 패턴
21.6 가상 스레드
21.7 순차 컬렉션
21.8 기본 문자셋 변경
찾아보기
[부록]
Appendix 01 데이터베이스 입출력(MySQL용)
20.1 JDBC 개요
20.2 DBMS 설치
20.3 Client Tool 설치
20.4 DB 구성
20.5 DB 연결
20.6 데이터 저장
20.7 데이터 수정
20.8 데이터 삭제
20.9 데이터 읽기
20.10 트랜잭션 처리
20.11 게시판 구현
Appendix 03 Java UI - JavaFX
01 JavaFX 개요
02 JavaFX 프로젝트 생성 및 실행
03 JavaFX 레이아웃
04 JavaFX 컨테이너
05 JavaFX 이벤트 처리
06 JavaFX 속성 감시와 바인딩
07 JavaFx 컨트롤
08 JavaFX 메뉴 바와 툴바
09 JavaFX 다이얼로그
10 JavaFX CSS 스타일
11 JavaFX 스레드 UI 변경
12 장면 이동과 애니메이션
13 JavaFX 과제
Appendix 04 NIO 기반 입출력 및 네트워킹
01 NIO 소개
02 파일과 디렉토리
03 버퍼
04 파일 입출력
05 파일 비동기 입출력
06 TCP 네트워크 입출력
07 TCP 비동기 네트워크 입출력
08 UDP 네트워크 입출력
09 NIO 과제
Author
신용권,임경균
25년 동안 시스템 제어 및 애플리케이션 개발자로 활동한 베테랑 개발자이자, IT 전문 교육자이기도 하다. 메카트로닉스를 전공했으며, 삼성항공 시스템 설계 파트에서 하드웨어 제어용 소프트웨어 개발을 담당했다. 유수한 교육기관에서 재직자 및 전문가 위탁교육을 진행해 왔으며, 현재는 한국소프트웨어산업협회에서 교수로 근무하고 있다. 주로 오픈 소스 프레임워크, 안드로이드, IoT, 스택 애플리케이션 분야에서 현업 재직자 및 채용 예정자를 위한 소프트웨어 역량 강화 사업의 강사로 활동하고 있다.
25년 동안 시스템 제어 및 애플리케이션 개발자로 활동한 베테랑 개발자이자, IT 전문 교육자이기도 하다. 메카트로닉스를 전공했으며, 삼성항공 시스템 설계 파트에서 하드웨어 제어용 소프트웨어 개발을 담당했다. 유수한 교육기관에서 재직자 및 전문가 위탁교육을 진행해 왔으며, 현재는 한국소프트웨어산업협회에서 교수로 근무하고 있다. 주로 오픈 소스 프레임워크, 안드로이드, IoT, 스택 애플리케이션 분야에서 현업 재직자 및 채용 예정자를 위한 소프트웨어 역량 강화 사업의 강사로 활동하고 있다.