성능 전문가로 널리 알려진 저자가 십수 년의 자바 개발 경험을 바탕으로 현장에서 꼭 필요한 기초지식을 정리한
책이다. 현장 중심으로 자바의 기본서를 다시 정의한 책이다. 독자가
생각하며 학습할 수 있도록 구성하였고 연습문제에 심혈을 기울였다. 23명의 베타리더 및 감수자가 먼저
리뷰하고 의견을 반영하였다.
4년 만의 개정판에서는 Java 8 버전
내용과 JavaFX 내용을 추가하였고, 1판 독자의 의견을
수렴하여 기본서에 더 충실할 수 있도록 내용을 수정 보완하였다.
_대상 독자
Q. 자바 개발자로 일하고 싶은데,
무엇을 어떻게 시작해야 할까요?
A: 우선 이 책의 1권을
마스터하세요. 연습문제를 반드시 풀어봐야 합니다.
Q. 현업에서 개발자로 일하고 있지만, 나의 개발 방식이 가끔 맞는 것인지 헷갈릴 때가 있어요.
A: 1권을 건너 뛰고 2권을
보셔도 됩니다. 레퍼런스로 찾아서 보셔도 좋을 듯 합니다.
Q. 개발자는 아니지만, 개발자들과
소통할 일이 많아요.
A: 1권만 공부해도 충분합니다. 개념을
익히는 데 많은 도움을 받을 수 있어요. 그리고 조금 시간을 투자해서
2권까지 공부한다면 자바 언어에 대한 깊이있는 이해를 할 수 있습니다.
_목차
[------1권------]
1장 프로그래밍이란 무엇인가?
Programming의 P
자바 프로그램의 메소드는 이렇게 생겼어요
자바의 가장 작은 단위는 클래스랍니다
클래스는 상태를 갖고 있어야 합니다
프로그래밍의 가장 기본은 =를 이해하는 것
한 줄을 의미하는 세미콜론
모든 프로그래밍 언어에는 예약어라는 것이
있어요
정리하며
2장 Hello God Of
Java
자바를 배울 환경 준비하기
HelloGodOfJava
만들기
HelloGodOfJava
컴파일하고 실행하기
main 메소드를 만들자
System.out.println()과 System.out.print()
주석(Comment)
처리하기
메소드를 직접 만들어 보자
정리하며
3장 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요
자바는 객체지향 언어라고 해요
클래스와 객체는 구분하셔야 해요
Car 클래스를 구현하자
계산기 클래스를 만들어보자
Calculator
객체를 생성해보자
정리하며
4장 정보를 어디에 넣고 싶은데
자바에서는 네 가지의 변수가 존재해요
예제를 통해서 지역 변수를 확실히 익히자
변수 이름은 이렇게
크게 보면 자바에는 두 가지 자료형이
있답니다
기본 자료형은 8개에요
8비트와 byte 타입
다른 정수형 타입들은 어떻게 활용하나?
소수점을 처리하고 싶어요
char와 boolean는 어떻게 쓰는 거지?
기본 자료형의 기본 값은 뭘까?
정리하며
5장 계산을 하고 싶어요
연산자라는 게 뭐지? 벌써 조금 배웠다고?
간단하게 계산하는 대입 연산자들
피연산자가 하나인 것도 있어요. 이걸 단항 연산자라고 하죠
자바에서 계산하는 순서를 알아두면 좋다
뭔가를 비교할 때는 어떻게 하지?
논리 연산자들을 알아보자
아주 특이한 ? : 연산자
기본 자료형의 형 변환을 이용한 변신
정리하며
6장 제가 조건을 좀 따져요
도대체 얼마나 조건을 따지길래…
if를 조금 더 다양하게 사용해보자
자바의
switch와 불켜는 스위치는 별 상관 없다
반복문이라구요?
가장 확실한 for 루프
많이 사용안하는 label
정리하며
7장 여러 데이터를 하나에 넣을 수는 없을까요?
하나에 많은 것을 담을 수 있는 배열이라는
게 있다는데…
배열의 기본값
배열을 그냥 출력해보면 어떻게 나올까?
배열을 선언하는 또 다른 방법
별로 사용하지는 않지만, 알고 있어야 하는 2차원 배열
배열의 길이는 어떻게 알 수 있을까요?
배열을 위한 for 루프
자바 실행할 때 원하는 값들을 넘겨주자
정리하며
8장 참조 자료형에 대해서 더 자세히 알아봅시다
참조 자료형은 나머지 다에요
기본 생성자
생성자는 몇 개까지 만들 수 있을까?
이 객체의 변수와 매개 변수를 구분하기
위한 this
메소드
overloading
꼭 기억하고 넘어가야 합니다
메소드에서 값 넘겨주기
static 메소드와 일반 메소드의 차이
static 블록
Pass by
value, Pass by reference
매개 변수를 지정하는 특이한 방법
정리하며
9장 자바를 배우면 패키지와 접근 제어자는 꼭 알아야 해요
패키지는 그냥 폴더의 개념이 아니에요
패키지 이름은 이렇게 지어요
import를 이용하여 다른 패키지에 접근하기
자바의 접근 제어자
클래스 접근 제어자 선언할 때의 유의점
정리하며
10장 자바는 상속이라는 것이 있어요
자바에서 상속이란?
상속과 생성자
메소드
Overriding
참조 자료형의 형 변환
Polymorphism
자식 클래스에서 할 수 있는 일들을 다시
정리해보자
정리하며
11장 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요?
미리 만들어 놓은 클래스들은 아주 많아요
API를 열어보자
클래스 및 인터페이스의 상세 정보 화면을
살펴보자
Deprecated라고 표시되어 있는 것은 뭐야?
Header와 Footer에 있는 링크들은 뭘까?
정리하며
12장 모든 클래스의 부모 클래스는 Object에요
모든 자바 클래스의 부모인 java.lang.Object 클래스
Object 클래스에서 제공하는 메소드들의 종류는?
Object 클래스에서 가장 많이 쓰이는 toString() 메소드
객체는
==만으로 같은지 확인이 안 되므로, equals()를 사용하죠
객체의 고유값을 나타내는 hashCode()
정리하며
13장 인터페이스와 추상클래스,
enum
메소드 내용이 없는 interface
인터페이스를 직접 만들어보자
일부 완성되어 있는 abstract 클래스
나는 내 자식들에게 하나도 안 물려 줄꺼여
enum 클래스라는 상수의 집합도 있다
enum을 보다 제대로 사용하기
enum 클래스의 부모는 무조건 java.lang.Enum이어야
해요
정리하며
14장 다 배운 것 같지만, 예외라는
중요한 것이 있어요
자바에서 매우 중요한 예외
try-catch는 짝이다
try-catch를 사용하면서 처음에 적응하기 힘든 변수 선언
finally야~ 넌 무슨 일이 생겨도 반드시 실행해야
돼
두 개 이상의 catch
예외의 종류는 세 가지다
모든 예외의 할아버지는 java.lang.Throwable 클래스다
난 예외를 던질 거니까 throws라고 써 놓을께
내가 예외를 만들 수도 있다구?
자바 예외 처리 전략
정리하며
15장 String
자바에서 가장 많이 사용하는 String 클래스
String의 생성자에는 이런 것들이 있다
String 문자열을 byte로 변환하기
객체의 널 체크는 반드시 필요하답니다
String의 내용을 비교하고 검색하는 메소드들도 있어요
String내에서 위치를 찾아내는 방법은 여러 가지에요
String의 값의 일부를 추출하기 위한 메소드들은 얘네들이다
String 값을 바꾸는 메소드들도 있어요
절대로 사용하면 안 되는 메소드가 하나
있어요!!!!!
immutable한 String의 단점을 보완하는 클래스에는 StringBuffer와 StringBuilder가 있다
정리하며
16장 클래스 안에 클래스가 들어갈 수도 있구나
클래스 안의 클래스
Static
nested 클래스의 특징
내부 클래스와 익명 클래스
Nested 클래스의 특징은 꼭 알아야 한다
정리하며
17장 어노테이션이라는 것도 알아야 한다
어노테이션이란?
미리 정해져 있는 어노테이션들은 딱 3개뿐
어노테이션을 선언하기 위한 메타 어노테이션
어노테이션을 선언해 보자
어노테이션에 선언한 값은 어떻게 확인하지?
어노테이션도 상속이 안돼요
정리하며
18장 이제 기본 문법은 거의 다 배웠으니 정리해 봅시다
객체지향 개발과 관련된 용어들
자바의 주석문(Comment)
패키지와 import
자바에서 사용되는 타입의 종류
변수의 종류
계산을 쉽게 도와주는 연산자들
조건문들
반복문들
아무나 사용 못하게 막아주는 접근 제어자
선언할 때 사용할 수 있는 각종 제어자들
자바를 구성하는 클래스, 인터페이스, abstract 클래스
메소드의 선언
자주 사용하게 되는 상속
예외를 처리하자
Object 클래스
String 클래스
어노테이션을 선언할 때 사용하는 메타
어노테이션들
API의 기초
정리하며
**** <자바의 신> 중간
점검 및 실습 ****
부록
Part 1
부록1
JDK 설치하기
부록2.
Eclipes 설치하기
부록3.
float와 double의 범위
부록4.
비트 연산자는 어떤 것일까
부록5.
java.lnag.Math 클래스
[------2권------]
19장 이쯤에서 자바의 역사와
JVM에 대해서 알아보자
자바의 역사
JDK의 플랫폼에 따른 차이
JDK ,
J2SE, Java SE 외에 자바에서 사용되는 다른 용어들
자바언어의 특징은 다음과 같다
자바의 버전별 차이
JIT 컴파일러는 도대체 뭘까?
HotSpot은 또 뭐야?
자바를 배우면 꼭 알아야 하는 용어
자바의
GC는 어떻게 진행되나요?
정리하며
20장 가장 많이 쓰는 패키지는 자바랭
java.lang
패키지는 특별하죠
숫자를 처리하는 클래스들
각종 정보를 확인하기 위한 System 클래스
System.out을 살펴보자
정리하며
21장 실수를 방지하기 위한 제네릭이라는 것도 있어요
실수를 방지할 수 있도록 도와주는 제네릭
제네릭이 뭐지?
제네릭 타입의 이름 정하기
제네릭에 ?가 있는 것은 뭐야?
제네릭 선언에 사용하는 타입의 범위도
지정할 수 있다
메소드를 제네릭하게 선언하기
정리하며
22장 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part1(List)
자바 컬렉션
List 인터페이스와 그 동생들
ArrayList에 대해서 파헤쳐보자
ArrayList의 생성자는 3개다
ArrayList에 데이터를 담아보자
ArrayList에서 데이터를 꺼내자
ArrayList에 있는 데이터를 삭제하자
Stack 클래스는 뭐가 다른데?
정리하며
23장 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part2(Set과 Queue)
Set이 왜 필요하지?
HashSet에 대해서 파헤쳐 보자
HashSet의 생성자들도 여러 종류가 있다
HashSet의 주요 메소드를 살펴보자
Queue는 왜 필요할까?
LinkedList를 파헤쳐보자
LinkedList의 생성자와 주요 메소드를 살펴보자
정리하며
24장 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part3(Map)
Map이란?
Map을 구현한 주요 클래스들을 살펴보자
HashMap 클래스에 대해서 자세히 알아보자
HashMap 객체에 값을 넣고 확인해보자
HashMap 객체의 값을 확인하는 다른 방법들을 알아보자
정렬된 키의 목록을 원한다면 TreeMap을 사용하자
Map을 구현한 Properties 클래스는
알아두면 편리하다
자바의 자료 구조를 정리해보자
정리하며
25장 쓰레드는 개발자라면 알아두는 것이 좋아요
쓰레드가 도대체 뭘까?
Runnable 인터페이스와 Thread 클래스
Thread 클래스의 생성자를 살펴보자
많이 사용되는 sleep() 메소드에 대해서 살펴보자
Thread 클래스의 주요 메소드를 살펴보자
쓰레드와 관련이 많은 synchronized
synchronized
블록은 이렇게 사용한다
쓰레드를 통제하는 메소드들
Object 클래스에 선언된 쓰레드와 관련있는 메소드들
ThreadGroup에서 제공하는 메소드들
정리하며
26장 파일에 있는 것을 읽고 쓰려면 아이오를 알아야죠
I/O는…
자바의
File과 Files 클래스
File 클래스를 이용하여 파일의 경로와 상태를 확인해 보자
File 클래스를 이용하여 파일을 처리하자
디렉터리에 있는 목록을 살펴보기 위한 list 메소드들
InputStream과 OutputStream은 자바 스트림의
부모들이다
Reader와 Writer
텍스트 파일을 써보자
텍스트 파일을 읽어보자
정리하며
27장 Serializable과 NIO도 살펴 봅시다
Serializable에 대해서 좀 살펴보자
객체를 저장해보자
객체를 읽어보자
transient라는 예약어는 Serializable과
떨어질 수 없는 관계다
자바
NIO란?
NIO의 Buffer 클래스
정리하며
28장 다른 서버로 데이터를 보내려면 어떻게 하면 되나요?
네트워크 프로그래밍이란?
소켓 통신을 하기 위해서 알아야 하는 Socket 클래스
간단하게 소켓 통신을 해보자
UDP 통신을 위해서 알아야 하는 Datagram 관련
클래스
간단하게 UDP 통신을 해보자
자바에서 웹 페이지 요청을 하려면 어떻게
해야 하지?
정리하며
29장 이제 주요 API도
알아봤으니 정리해 봅시다
자바의 예약어들
제네릭
쓰레드
자바
API에서 제공하는 자료 구조와 Collection
Collection-List
인터페이스
Collection-Set
인터페이스
Collection-Queue
인터페이스
Collection-Map
인터페이스
IO 관련 클래스들
네트워크 관련 클래스들
정리하며
**** <자바의 신> 기말고사 ****
30장 Java 7에서
달라진 것들에는?
Java 7에서는…
달라진 숫자 표현법!!!
switch 문장도 좀 확장되었대요
제네릭은 다이아몬드를 쓰면 쉬워요
Non
reifiable varargs 타입
예외도 이렇게 보완 되었답니다
Java 7부터는 꼭 안닫아도 되는 애들이 있어요
정리하며
31장 Java 7에
추가된 것들에는?
Fork/Join은 CPU를 더 쉽게, 효율적으로 사용하기 위해서 만들어진 거에요
NIO도 잘 모르는데 NIO 2가 나왔다
Files 클래스는 파일을 다루기 위한 클래스랍니다
파일이 변경되었는지 확인하는 WatchService 클래스도 추가되었어요
파일과 관련된 다른 새로운 API에는 어떤 것들이 있을까?
Fork/Join과 NIO2 외에 추가 및 변경된 것들을
간단히 살펴보죠
정리하며
32장 Java 8에
추가된 것들은?
Java 8의 새로운 것들
Optional
Default
method
날짜 관련 클래스들
병렬 배열 정렬(Parallel array sorting)
StringJoiner
정리하며
33장 Java 8에서
변경된 것들은?
Lambda 표현식(expression)
java.util.function
패키지
stream
stream
forEach()
메소드 참조
stream
map()
stream filter()
Stream을 다시 한번 정리해 보자
정리하며
34장 GUI 도구인 Java FX
JavaFX란?
JavaFX의 아키텍처와 UI 컴포넌트
JavaFX 개발 환경 구축하기
Hello
JavaFX
JavaFX의 Layout
UI 컴포넌트 확인해보기
이벤트 처리하기
정리하며
35장 JavaFX로
계산기를 만들어보자
Calculator
프로젝트 만들기
UI 컴포넌트 배치하기
버튼에 이벤트 추가하기
계산기에 생명력을 불어넣기
정리하며
36장 이제 저는 뭘 더 공부해야 하는 거죠?
이제 뭘 공부해야 할까?
자바 언어로 개발하기 위해서 알아야 하는
것들(Group 1)
웹 개발자라면 알아야 하는 것들(Group 2)
이것 만으로는 부족하다(Group 3)
정리하며 937
부록
Part 2
부록6.
jar
부록7.
classpath와 자바 옵션들
부록8.
javadoc
부록9.
Formatter는 알아두면 매우 유용하게 사용할 수 있어요
부록10.
Collections 다음으로 많이 쓰는 애들은 자바 유틸
부록11.
자바의 ThreadLocal
부록12.
자바의 volatile
-------온라인 특별부록판----------
<<자바 웹 개발의 기본>>
1장. 저는 이런 것 말고 웹 페이지를 만들고
싶었다구요
2장. 그럼 데이터를 저장하려면 어떻게 해야
하는데요?
부록1.
Tomcat 설치하기
부록2.
JSP와 web.xml 추가 설명
부록3.
SQL 기초와 JDBC 타입
[다운로드 링크]
* www.roadbook.co.kr/187
* cafe.naver.com/godofjava
_주요 내용
_4년 만의 개정판, 이렇게 달라렸습니다!
1. 코드를 최대한 실행하기 쉽게 변경하였습니다.
2. <자바의 신> 코드들을 실행할 수 있도록 본문 예제의
“샘플 실행기”를 만들었습니다.
이 책에는 “생각해 봅시다”라는 쉬어가는 코너가 아주 자주 등장합니다. 이 코너에서는 독자에게 화두를 던지고 그에 대해 짧게는 1분에서
길게는 10분까지 생각해볼 수 있도록 하였습니다. 이를 통해
현업에서 개발자로 성장했을 때 단순 코더가 아니라 생각하는 코더가 될 수 있도록 세심하게 배려하였습니다.
_<자바의신>은 연습문제에 심혈을 기울였습니다.
문제를 풀어보는 것만큼 실력을 높일 수
있는 지름길은 없습니다. 서술형 문제에서는 이미 학습한 내용을 잘 기억하고 있는지 테스트할 수 있습니다. 실습 문제에서는 작은 단위의 프로그램을 만들어보면서 프로그램 짜는 능력을 쑥쑥 키워갈 수 있습니다.
_<자바의 신> 사이트에서 연습문제도 직접 풀어보고 궁금한 게 있으면 저자에게
바로 물어보세요.
삼성 SDS에서
개발을 시작하여, Naver의 성능 엔지니어링 팀에서 일했다. 지금은 NHN엔터테인먼트에서 협업 도구인 두레이(Dooray!)를 개발하고
있다. <자바 성능 튜닝 이야기>, <자바
개발자와 시스템 운영자를 위한 트러블슈팅 이야기> 등 다수의
IT 서적을 집필하였다.