손안의 자바
도서명:손안의 자바
저자/출판사:김지훈,이현우/에이콘출판
쪽수:660쪽
출판일:2018-07-17
ISBN:9791161751832
목차
지은이 소개
지은이의 말
리뷰어의 말
들어가며
1부. 자바 기본
1장. 자바를 시작하며
__자바란?
__개발 환경 구축하기
__자바에서의 명명 규칙
2장. 변수와 상수
__변수의 이해와 활용
__변수의 타입
__논리형 - boolean
__문자형 - char
__정수형 - byte, short, int, long
__실수형 - float, double
__형변환
__상수
3장. 연산자
__연산자 종류와 우선순위
__단항 연산자
____증감 연산자 ++, --
____부호 연산자 +, -
____비트 전환 연산자 ~
____논리 부정 연산자 !
__산술 연산자
____사칙 연산자 +, -, ?, /
____나머지 연산자 %
____시프트 연산자 <<, >>, >>>
__비교 연산자
____대소비교 연산자 <, >, <=, >=
____등가비교 연산자 ==, !=
__논리 연산자
____논리 연산자 &&, ||
____비트 연산자 &, |, ^
4장. 실행흐름의 컨트롤
__조건문 if문, switch문
____if문
____switch문
__반복문 for, while, do~while
____for문
____while문
____do~while문
__break와 continue문
____break문
____continue문
__변수의 범위
5장. 배열
__배열(array)의 필요성
__배열의 선언과 생성 그리고 초기화
__배열의 사용
__배열의 복사
__다차원 배열
__가변 배열
__배열을 벗어난 인덱스
__System.arraycopy와 매뉴얼 복사 중 누가 빠른가?
__Arrays - 배열을 위한 유틸 클래스
6장. 객체 지향 프로그래밍의 개념
__객체 지향 프로그래밍이란?
__객체
__객체 간 상호작용
__캡슐화
7장. 클래스, 변수,메소드
__객체 클래스, 객체 참조자
__자바 10에서의 지역 변수 타입 추론
__클래스 선언
__클래스 사용
__클래스 구성 요소
__필드
__필드 선언
__필드 사용
__메소드
____Void
__메소드 오버로딩
__생성자
8장. 패키지와 임포트
__패키지
__임포트(import)
9장. 상속과 오버라이딩 그리고 다형성
__상속의 개념
__상속
__오버라이딩
__다형성
__상속과 생성자
__상속관계에서의 메소드 호출 순서
10장. 제어자
__접근 제어자
____Private
____(default)
____Protected
____Public
__프로그래밍 가이드 - 접근 제어자의 엄격한 적용
__프로그래밍 가이드 - 멤버변수에 대한 직접 접근을 막아라
__static 제어자
__정적 메소드의 재정의 불가
__final 제어자
11장. 추상 클래스와 인터페이스
__추상 클래스
__인터페이스
__인터페이스를 사용한 다중상속
__자바 8 이후의 인터페이스 변화
____인터페이스 디폴트(default) 메소드
____인터페이스 정적(static) 메소드
____인터페이스 private 메소드와 인터페이스 private 정적 메소드
__자바 8 이후의 인터페이스를 사용한 다중상속
__자바8 이후의 ::를 사용한 메소드 참조 그리고 함수형 인터페이스
____함수형 인터페이스
____빌트인 함수형 인터페이스
12장. 중첩 클래스
__중첩 클래스 사용 이유
__중첩 클래스 분류
__내부 클래스
__정적 내부 클래스
__메소드 로컬 내부 클래스
__익명 내부 클래스
__유사 중첩 클래스
13장. 오류 처리
__오류 처리 소개
__오류 클래스 구조 및 기본 동작 방식
__예외 캐치 처리 순서
__비즈니스 예외
__실 프로젝트에서 많이 사용되는 예외 처리 방****
__finally 문장
__try-with-resources 문장
__인터페이스나 추상 클래스에서의 예외 쓰로우 선언
14장. 자주 사용하는 자바 기본 API
__Object 클래스
____toString ()
____equals ()
____clone ()
____프로그래밍 가이드 - Object의 toString()을 재정의하라
__String 클래스
__StringBuffer 클래스
__Math 클래스
__래퍼 클래스
__Random 클래스
__java.util.regex 패키지
__BigInteger
__BigDecimal
__Calendar와 Date 그리고 DateFormat
__자바 8부터 지원하는 새로운 날짜 지원 API
____날짜 및 시간 알아내기
____날짜 및 시간 객체에서 정보 조회하기
____날짜와 시간 더하거나 빼기
__날짜와 시간 변경하기
__특정 날짜 계산하기
____날짜 및 시간 비교
____날짜 및 시간 차이 계산
____Period를 사용한 날짜 기반 차이
____Duration을 사용한 초, 나노초 기반 차이
____날짜 포맷팅
__ZonedDateTime으로 세계시 다루기
15장. 제네릭
__들어가면서
__제네릭의 필요성
__제네릭을 이용한 첫번째 클래스 작성하기
__제네릭 동작 방식
__제네릭 기본 문법
____제네릭 클래스의 new 불가
____제네릭 타입 구체화 시 배열 불가
____구체화 타입의 자식 타입 사용 가능
____정적 요소에 제네릭 타입 사용 불가
____제네릭 타입에 제약 조건 두기
__제네릭 인터페이스
__제네릭 메소드
__제네릭 와일드카드
__좀 더 복잡한 제네릭 메소드와 와일드카드의 예
____파라미터에는 와일드카드가 없는 경우
____파라미터에 와일드카드가 한개 있는 경우
____파라미터에 와일드카드가 두개 있는 경우
__다이아몬드 연산자
16장. 컬렉션 프레임워크
__HashSet
__ArrayList
__Vector
__HashMap과 Hashtable
__Iterator
__리스트 대 배열
__Comparator를 사용한 목록 정렬하기
__목록에 요소 추가 및 삭제하기
____foreach문에서의 추가 및 삭제 시 예외발생
____Iterator를 사용한 요소 삭제
____인덱스를 사용한 for문에서의 삭제 시 정합성 문제
____인덱스를 사용한 요소 삭제 및 추가
17장. 열거형(Enum 타입)
__들어가면서
__처음 만나는 열거형
__열거형에 데이터 연결하기
__여러 형태의 열거형 정의 방법
__열거형에 관한 유용한 메소드
18장. 어노테이션
__들어가면서
__어노테이션 맛보기
__JDK가 제공하는 표준 어노테이션
__커스텀 어노테이션 작성을 위한 기초 지식
____@Target
____@Retention
____@Documented
____@Inherited
____@Repeatable
__커스텀 어노테이션 작성하기
__프로그래밍 가이드 - 네이밍 규칙보다는 어노테이션을 사용해 식별하라
19장. 람다식
__들어가면서
__람다식 개념
__람다식 활용 예
__함수형 인터페이스
____람다 캡처링
____람다식을 조합하기 위한 빌트인 함수형 인터페이스의 장치
20장. 자바 8의 스트림
__들어가면서
____스트림을 왜 사용하는가?
__스트림 동작 방식
____Stream의 인스턴스 메소드 filter()
____Stream의 인스턴스 메소드 sorted()
____Stream의 인스턴스 메소드 map()
____Stream의 인스턴스 메소드 collect()
__스트림 예제 분석하기
__스트림 좀더 알아보기
__다양한 스트림 메소드
____Stream의 Reduce() 메소드
____Stream의 mapToInt(), mapToLong(), mapToDouble() 메소드
____필터 기능을 제공하는 메소드 - filter(), distinct(), limit(), skip()
____중복 요소를 제거하는 메소드 - distinct()
____최대 요소의 개수를 제한하는 메소드 - limit()
____특정 개수를 건너띄는 메소드 - skip()
____Finding과 Matching 메소드
____복합객체의 스트림을 세부 객체의 스트림으로 분해하는 flatMap() 메소드
____Collectors.groupingBy() 메소드
____foreach 메소드
____병렬처리를 위한 parallelStream
21장. 스레드
__들어가면서
__스레드란?
__동시성와 병렬성
__첫 번째 스레드 프로그램
__다양한 스레드 생성 방법
__스레드 세이프
__동기화 메소드 및 동기화 블록
__멀티스레드 프로그래밍의 일반적인 패턴 - 스레드 풀
__서버(Was)의 스레드 프로그래밍 모델
__스레드 로컬
__결과 값이 있는 동시 수행
__Fork/Join 프레임워크의 필요성
__ForkJoin을 사용한 동시 처리
22장. I/O 스트림 및 파일
__들어가면서
__I/O 스트림 개념
__다양한 I/O 스트림
__FileInputStream
__FileOutputStream
__ByteArrayInputStream /ByteArrayOutputStream
__버퍼링 개념
__BufferedInputStream/BufferedOutputStream
__파일 다루기
____File 생성자
____파일 생성하기
____디렉터리 생성하기
____마지막으로 수정된 날짜 구하기
____파일/디렉터리 존재 여부 확인
____이름 변경하기
____파일 사이즈 구하기
____마지막 수정 날짜 변경하기
____파일 삭제하기
____I/O 스트림 등에서 파일이름 문자열 대신 File 사용하기
____기존 파일에 스트링 덧붙이기
23장. 네트워크 프로그래밍
__들어가면서
__네트워크 환경 이해
____방화벽
____라우터
____스위치
____MAC
__도메인
__TCP/IP 4 계층
__소켓 서버 기본 구조 이해하기
__소켓 클라이언트 프로그램 기본 구조 이해하기
__개선된 소켓 서버 프로그램
__UDP 소개 및 예제
24장. Java NIO
__들어가면서
__NIO 이유
__채널과 버퍼 그리고 셀렉터 개념 알아보기
__버퍼 좀더 알아보기
____버퍼 생성
____버퍼 위치 속성
__채널과 버퍼 사용 패턴
__NIO 소켓 서버 프로그램
__IO vs NIO 선택
2부. 자바 확장
1장. 생성자 관련 프로그래밍 가이드
__들어가면서
__프로그래밍 가이드 - 생성자 대신 정적 팩토리 메소드 사용을 검토하라
__프로그래밍 가이드 - 생성자 대신 빌더 사용을 검토하라
__프로그래밍 가이드 - 유틸리티 클래스 생성자를 private로 하라
2장. 가비지 컬렉션 관련 가이드
__들어가면서
__프로그래밍 가이드 - 쓸모없는 객체참조를 제거하라
__프로그래밍 가이드 - 종결자를 중요 작업에 사용하지 않아야 한다
3장. 객체 복사하기
__들어가면서
__클론을 이용한 복사
____복사 생성자나 복사 정적 팩토리 메소드 사용한 복사방법을 고려하라
4장. 클래스 설계 가이드
__들어가면서
__프로그래밍 가이드 - 가능한 불변 클래스로 설계하라
__프로그래밍 가이드 - 상속보다는 컴포지션을 사용하라
5장. 그 밖의 기타 사항
__클래스패스를 고려한 클래스 실행
__java로 클래스 실행 시 인수 전달하기
__라이브러리란?
__Maven 환경 소개
맺으며
찾아보기