You are on page 1of 34

1:1 과외처럼 공부하고 싶을 때

작심삼일, 하다가 포기하게 될 때


어제 배운 내용이 생각나지 않을 때

신용권 지음

★★★★★
신 혼공자
혼자 공부하는 사람 혹은 그런 무리를 일컫는 신조어

〔유의어〕 혼공족

JAVA 245개의
8 & 11 지원 손코딩 예제

무료 동영상 별책
강의 용어 노트
혼자 공부하는 자바
1:1 과외하듯 배우는 프로그래밍 자습서

초판발행 2019년 6월 10일

지은이 신용권 / 펴낸이 김태헌


펴낸곳 한빛미디어 (주) / 주소 서울시 서대문구 연희로2길 62 한빛미디어(주) IT출판사업부
전화 02 – 325 – 5544 / 팩스 02 – 336 – 7124
등록 1999년 6월 24일 제25100-2017-000058호
ISBN 979 – 11– 6224 – 187– 5 94000 / 979 – 11– 6224– 194– 3(세트)

총괄 전태호 / 책임편집 전정아 / 기획 이미향, 박민아 / 편집 강민철


디자인 표지·내지 박정화 / 일러스트 이진숙 / 조판 김현미 / 용어노트 김도윤
영업 김형진, 김진불, 조유미 / 마케팅 송경석, 김나예 / 제작 박성우, 김정우

이 책에 대한 의견이나 오탈자 및 잘못된 내용에 대한 수정 정보는 한빛미디어(주)의 홈페이지나 아래 이메일로


알려주십시오. 잘못된 책은 구입하신 서점에서 교환해 드립니다. 책값은 뒤표지에 표시되어 있습니다.
한빛미디어 홈페이지 www.hanbit.co.kr / 이메일 ask@hanbit.co.kr
소스 코드 www.hanbit.co.kr/src/10187 / 학습 사이트 hongong.hanbit.co.kr

Published by HANBIT Media, Inc. Printed in Korea


Copyright © 2019 신용권 & HANBIT Media, Inc.
이 책의 저작권은 신용권과 한빛미디어 (주)에 있습니다.
저작권법에 의해 보호를 받는 저작물이므로 무단 복제 및 무단 전재를 금합니다.

지금 하지 않으면 할 수 없는 일이 있습니다.
책으로 펴내고 싶은 아이디어나 원고를 메일 ( writer@hanbit.co.kr ) 로 보내주세요.
한빛미디어(주)는 여러분의 소중한 경험과 지식을 기다리고 있습니다.
혼자
공부하는
자바
01-2 이클립스 개발 환경 구축

핵심 키워드 이클립스 워크스페이스 뷰 퍼스펙티브

복잡한 프로그램을 개발할 경우에는 개발자의 코딩 실수를 줄이기 위해 키워드의 색


이 책의 구성 상 구분, 자동 코드 완성 및 디버깅(debugging: 모의 실행을 해서 코드의 오류를
찾는 것) 기능을 갖춘 소스 편집 툴을 사용하는 것이 좋습니다.
이번 절에서는 기업체에서 가장 선호하는 개발 전문 툴인 이클립스의 사용 방법에
대해 알아보겠습니다.

『혼자 공부하는 자바』 7단계 길잡이 시작하기 전에

이클립스는 무료로 사용할 수 있는 오픈 소스 통합 개발 환경 IDE: Integrated Development Environment입니다.


IDE란 프로젝트 생성, 자동 코드 완성, 디버깅 등과 같이 개발에 필요한 여러 가지 기능을 통합적으
로 제공해주는 툴을 말합니다.

01-1
이클립스는 기본적으로 자바 프로그램을 개발할 수 있도록 구성되어 있지만, 개발자가 추가적으로

프로그래밍 언어와 자바
플러그인plugin을 설치하면 웹 애플리케이션 개발, C, C++ 애플리케이션 개발 등 다양한 개발 환경을
구축할 수 있습니다.

현재 이클립스는 초급 개발자부터 고급 개발자에 이르기까지 광범 주석 사용하기


좋은 편집 툴이란
핵심 키워드
위하게 사용되고 기계어 프로그래밍 언어
있고, 기업체에서 소스 사용하는
가장 많이 파일 컴파일 JDK
전문 개발 환경 변수 주석은보다
개발자에게 프로그램 실행과는 상관없이 코드에 설명을 붙인 것을 말합니다
정확한 코딩을 유
툴입니다. 이 책으로 자바를 처음 학습하는 분들은 어떤 에디터를 달면 전체 코드를 이해하기 쉽고 수정이 용이합니다. 특히 다른 사람이
도하도록 도와주
는 것!
석하는 작업은 쉬운 일이 아니기 때문에 본인이 작성한 코드를 다른 사람
선택할지 고민하지 말고 이클립스를
컴퓨터에서 사용하길 권해드립니다.
실행하는 프로그램(program)은 특정 목적을 수행하도록 프로그래밍
언어로 작성된 소스를 기계어로 컴파일한 것입니다. 이번 절에서는 프로그래밍 언 꼭 넣어주는 것이 좋습니다.
어의 역할에 대해 알아보고, 자바 언어로 프로그램을 개발할 수 있는 환경을 만들
어보겠습니다. 주석은 컴파일 과정에서 무시되고 실행문만 바이트 코드로 번역됩니다.
서 주석을 많이 작성한다고 해서 바이트 코드 파일의 크기가 커지는 것
직접 해보는 손코딩
니므로 가급적이면 설명이 필요한 코드에 주석을 달아두는 것이 좋습니다

시작하기 전에 소스
주석 코드는
기호는 직접
다음과 같이손으로 입력한
세 가지가 있습니다.
시작하기 전에
후 실행하세요! 코드 이해가 어
컴퓨터가 이해할 수 있는 기계어machine language는 우리가 일상생활에서 사용하는 언어와는 너무나도 다 구분 주석 기호 설명
해당 절에서 배울 주제 및 려우면 주석, 실행결과, 앞뒤의
른 0과 1로 이루어진 이진 코드를 사용합니다. 사람이 이해하기에는 매우 어렵죠. 반대로 사람이 사 라인 주석 // … //부터 라인 끝까지 주석으로 처리합니다
주요 개념을 짚어 줍니다. 코드 설명을 참고하세요.

01-12
용하는 언어는 컴퓨터 입장에서 보면 이해할 수 없는 문자의 집합입니다. 그렇기 때문에 사람과 컴퓨 범위 주석 / … / * * /*와 */ 사이에 있는 내용은 모두 주석으
01-2 이클립스 개발 환경 구축 015 기본편
터가 대화하기 위해서는 사람의 언어와 기계어의 다리 역할을 하는 프로그래밍 언어가 필요합니다. /**와 */ 사이에 있는 내용은 모두 주석으

1 3 4
도큐먼트 주석 /** … */

Start
프로그래밍 언어로 작성한 파일을 소스 source
프로그래밍 언어와 자바
파일이라고 합니다. 소스 파일은 컴퓨터가 바로 이해할 수
주로 javadoc 명령어로 API 도큐먼트

없기 때문에 컴파일 compile이라는 과정을 통해서 0과 1로 이루어진 기계어 파일로 번역한 후에 컴퓨터
에서 사용합니다. ✚ 여기서 잠깐 문자열 내부에는 주석을 붙일 수 없다
핵심 키워드 기계어 프로그래밍 언어 소스 파일 컴파일 JDK 환경 변수
핵심 키워드 말풍선 주석 기호는 코드 내 어디서든 작성이 가능하지만, 문자열(" ") 내부에서 작성하면 안 됩니
소스 파일
주석문이 아니라 문자열 데이터로 인식하기 때문에 다음과 같이 사용할 수 없습니다.

해당 절에서 중점적으로
프로그래밍 class Calculator { 컴퓨터에서 실행하는
지나치기프로그램(program)은 특정 목적을 수행하도록 프로그래밍
쉬운 내용 혹은
언어로 언어로
public static void 작성된 소스를
main(String[] 기계어로
args) { 컴파일한 것입니다. 이번 절에서는 프로그래밍 언
System.out.println("Hello, /*주석이 될 수 없음*/welcome to the j
볼 내용을 확인합니다.
소스 파일 작성 int result = 10어의+ 20;
역할에 대해 꼭 알아보고,
기억해 자바 두어야
언어로 할 내용 개발할 수 있는 환경을 만들
프로그램을
System.out.println(result);
어보겠습니다.을 짚어 줍니다.
}
}
Hello.java에 라인 주석(//)과 범위 주석(/* ~ */)을 추가해보겠습니다
내가 아는
기계어 기계어
시작하기 전에 직접 해보는 손코딩
실행 0010011100010 컴파일
컴파일러 주석 사용하기 소스 코드 Hello.java
0010010010000
컴퓨터가 이해할 수 있는 기계어machine language는 우리가 일상생활에서 사용하는 언어와는 너무나도 다
1101110000111
01 package sec03.exam01;
른 0과 1로 이루어진 이진 코드를 사용합니다. 사람이 이해하기에는 매우 어렵죠. 반대로 사람이 사
02
용하는 언어는 컴퓨터 입장에서 보면 이해할 수 없는 문자의 집합입니다. 그렇기 때문에 사람과 컴퓨
03 /*
기본편 002 CHAPTER 01 자바 시작하기 터가 대화하기 위해서는 사람의 언어와 기계어의 다리 역할을 하는 프로그래밍
04 언어가
작성자필요합니다.
: 신용권
범위 주석
05 작성일: 2025.12.31
프로그래밍 언어로 작성한 파일을 소스 source 파일이라고 합니다. 소스 파일은 컴퓨터가 바로 이해할 수
06 */
없기 때문에 컴파일 compile이라는 과정을 통해서 0과 1로 이루어진 기계어 파일로
07 번역한 class
public 후에 컴퓨터
Hello {
에서 사용합니다.

소스 파일
기본편 038 CHAPTER 01 자바 시작하기

프로그래밍 class Calculator {


언어로 public static void main(String[] args) {
VIII 소스 파일 작성 int result = 10 + 20;
System.out.println(result);
}
}

내가 아는
기계어
마무리

▶ 6가지 키워드로 끝내는 핵심 포인트


● 바이트 코드 파일: 자바 소스 파일을 javac 명령어로 컴파일한 파일을 말합니다.


JVM : 자바 가상 기계 Java Virtual Machine는 바이트 코드 파일을 운영체제를 위한 완전한 기계어로
번역하고 실행하는 역할을 합니다. JVM은 java 명령어에 의해 구동됩니다.

● 클래스 선언: 자바 소스 파일은 클래스 선언부와 클래스 블록으로 구성됩니다. 이렇게 작성하는
것을 클래스 선언이라고 합니다.


main() 메소드: java 명령어로 바이트 코드 파일을 실행하면 제일 먼저 main( ) 메소드를 찾아
좀 더 알아보기 블록 내부를 실행합니다. 그래서 main( ) 메소드를 프로그램 실행 진입점entry point이라고 부릅
니다.
쉬운 내용, 핵심 내용도 좋지만,
때론 깊이 있는 학습이 필요할 ● 주석: 주석은 프로그램 실행과는 상관없이 코드에 설명을 붙인 것을 말합니다. 주석은 컴파일
과정에서 무시되고 실행문만 바이트 코드로 번역됩니다.
확인 문제
때도 있습니다. 더 알고 싶은
갈증을 풀 수 있는 내용으로 담 ●
지금까지
실행문: 변수 선언, 값 저장, 메소드 호출에 해당하는 학습한
코드를 내용을
말합니다. 문끝에는 세미콜
실행문
았습니다. 론(;)을 붙여야 합니다. 제를 풀면서 확인합니다.

5 ▶ 확인 문제 6 7 Finish
1. 자바 프로그램 개발 과정을 순서대로 적어보세요. ( )→( )→( )→( )

1 javac 명령어로
핵심 포인트
컴파일한다.
2 소스 파일(~.java)을 작성한다.
3 절이 끝나면 실행한다.
java 명령어로 마무리의 핵심
4 포인트에서 핵심 키워드의
실행결과를 확인한다.

내용을 리마인드하세요.

좀더
제공 소스 파일 이용하기
알아보기
▶ 확인 문제 01-3 자바 프로그램 개발 과정 045 기본편

1. 배열을생성하는방법으로틀린것은무엇입니까?
학습의 편의를 위해서 이 책에서 다루는 모든 자바 소스 파일을 압축해서 제공합니다. 해당 압축 파
int[ ]array={1,2,3};
1
일은 한빛출판네트워크 웹사이트(www.hanbit.co.kr/src/10187)에서 다운로드할 수 있습니다.
int[ ]array;array={1,2,3};
2
압축 파일명은 다음과 같습니다.
int[ ]array=newint[3];
3

SelfStudyJava.zip int[ ][ ]array=newint[3][2];


4

SelfStudyJava.zip 파일을 다운로드하고 압축을 해제해보면 다음과 같이 각 장별로 폴더가 저장되


2 배열의기본초기값에대한설명으로틀린것은무엇입니까?
어 있습니다.
1 정수타입배열항목의기본초기값은 0이다.
2 실수타입배열항목의기본초기값은 0.0F또는0.0이다.
IX
boolean타입배열항목의기본초기값은true이다.
3

4 참조타입배열항목의기본초기값은 null이다.

배열의길이에대한문제입니다.array.length의값과array[2].
학습 가이드

『혼자 공부하는 자바』 100% 활용하기


때론 혼자, 때론 같이 공부하기!
학습을 시작하기 전부터 책 한 권을 완독할 때까지, 곁에서 든든한 러닝 메이트 Learning Mate 가 되어 드
리겠습니다.

본격적으로 학습을 시작하기 전에

Oracle JDK 설치하기 이클립스 설치하기


자바로 프로그램을 개발하기 위해서는 먼저 자바 개발 도 이 책으로 자바를 처음 학습하는 분들이라면, 오픈 소스
구(JDK)를 설치해야 합니다. Oracle 홈페이지에 접속하 통합 개발 환경인 이클립스를 사용하길 권장합니다. 이클
여 Oracle JDK를 무료로 다운로드한 후 설치해주세요. 립스 홈페이지에 접속하여 무료로 다운로드한 후 설치해
5쪽 주세요. 16 쪽

https://www.eclipse.org

https://www.oracle.com

학습 사이트 100% 활용하기


예제 파일 다운로드,
동영상 강의 보기, 저자에게 질문하기를 한번에! 사이트 바로가기

hongong.hanbit.co.kr

X
동영상&학습자료
메뉴를 클릭해 책
제목을 선택하세요.
혼자 공부하는 자바

1:1 과외처럼 공부하고 싶을 때

충분하다!
작심삼일, 하다가 포기하게 될 때 지은이 신용권 blueskii@naver.com

어제 배운 내용이 생각나지 않을 때 소속: 한국소프트웨어산업협회 교수.


20년 동안 시스템 제어 및 애플리케이션 개발자로 활동
프로그래밍 자습서 한 베테랑 개발자이자, IT 전문 교육자이기도 하다. 메카
트로닉스를 전공했으며, 삼성항공 시스템 설계 파트에서
하드웨어 제어용 소프트웨어 개발을 담당했다. 1998년부
터 지금까지 자바 개발자로, 그리고 자바 강사로 활동하고

3
있다. 삼성멀티캠퍼스(SDS)에서 자바 전임교수로 근무했

용어 노트
고, 유수한 교육기관에서 재직자 및 전문가 위탁교육을 진
행해 왔다. 또한 국내 최초로 재직자를 위한 ‘HTML5 모

개의 쉬운 문제부터 도전 문제까지! 바일 웹앱 & 하이브리드앱’ 교육과정을 개설하여 많은 전


딩 예제로 스스로 해결하며
혼자 공부할 때 필
문 개발자를 양성했다. 최근에는 오픈 소스 프레임워크,

접 해보는 오래 기억하는 안드로이드, HTML5 하이브리드앱 등의 분야에서 대학


전산망 및 현업 재직자를 위한 소프트웨어 역량 강화 사
습 학습 업의 전임강사로 활동했다. 현재는 SK Planet에서 운영
하는 T아카데미에서 자바, 웹, 안드로이드 앱 개발 강사로 요한 용어집을 다운
활동하고 있다. 『이것이 자바다』(2015, 한빛미디어)를 집

신용권 지음
필했다.
로드하여 나만의 용
입문자도 중간에 포기하지 않고 완독할 수 있을 것 같아요. _ 최예소라 님
★★★★★
것 같습니다. 적절한 예로 풀어내서 오래 기억할 수 있을 것 같고요. _김준우 님 신 혼공자
어 노트를 만들어보
신용권 지음

등 모든 것이 자세하게 설명되어 있고, 어렵지 않게 술술 잘 읽힙니다. _ 정수현 님 혼자 공부하는 사람 혹은 그런 무리를 일컫는 신조어

〔유의어〕 혼공족
지 않았습니다. _ 구자돈 님

이 됐어요. 앞에서 공부한 내용을 한번에 복습할 수 있었어요. _ 안정은 님 세요.


한 것이 좋았습니다.

하고 완독할 수 있었습니다. _ 김종민 님 용어 노트

JAVA 245개의
프로그래밍 언어/자바 8 & 11 지원 손코딩 예제
학습 사이트
무료 동영상 별책 http://hongong.hanbit.co.kr
강의 용어 노트 예제 파일 다운로드, 동영상 강의 보기
정가 24,000원 저자에게 질문하기를 한번에!

2019. 5. 27. 오전 11:44

실습 예제 동영상 강의
소스 코드를 다운로드하여 <직접 무료 동영상 강의와 함께
해보는 손코딩>과 <확인 문제>의 보다 빠르고 정확하게 자바
실행 결과를 확인하세요. 를 익히세요.

cafe.naver.com/thisisjava

저자에게 질문하기
공부하다가 막힐 땐 저자가 직접 답변해드립니다!

때론 혼자, 때론 같이! ‘혼공 학습단’과 함께 하세요.


한빛미디어에서는 ‘혼공 학습단’을 모집합니다.
자바 학습자들과 함께 학습 일정표에 따라 공부하며 완주의 기쁨을 느껴보세요.

한빛미디어 홈페이지에서 ‘메일 수신’에 동의하면 학습단 모집 일정을 안내받으실 수 있습니다.

XI
학습 로드맵

일러두기 01~ 05장

01~ 11장 대부분의 프로그래밍 언어


자바의 기초를 다룬 부분으 에서 공통적으로 다루는
기초 내용입니다.
로 프로그래밍의 기초 과정 자료 타입 암기!

01 02
을 학습하려는 독자는 기본
Start
편만 학습해도 좋습니다.
자바 시작하기 변수와 타입
12~14장
자바를 활용해서 개발을 하
5장을 학습하기 위해서는 기본 타입과
려면 고급편까지 모두 이해 참조 타입의 차이를 이해해야 합니다.

하도록 합시다.
08~ 09장
난이도
객체지향 프로그래밍을 더욱 강화시키는
문법입니다. 적절히 활용할 수 있도록 인터
페이스의 역할을 꼭 이해하고 넘어갑시다.

09 08
중첩 클래스와 중첩 인터페이스 인터페이스

자바에서 예외 처리하는
방식만 짚고 넘어가기

10 예외 처리
10장

예외가 발생했을 때 처
11장을 학습하기 위해선 클래스와 인터페이스에 대한 지식이 필요합니다.
리하는 다양한 방법을
중심으로 공부하세요!

11 12
11장 기본 API 클래스 스레드

개발을 더욱 편리하게
해주는 API들을 다루는
내용입니다.

XII
03 04
연산자 조건문과 반복문

참조 타입이 내부에
서 어떻게 작동하는
지 알고 넘어가기

참조 타입
05
클래스 내용은 참조 타입에 대한 이해가 필요합니다.

두 번 보기

객체 지향
프로그래밍의 꽃

07 06
상속 클래스 06~ 07장

자바를 포함한 객체 지향 프로그래밍


언어에서의 핵심 내용입니다. 이후에
클래스와 상속 문법을 기반으로 진행
되니 중점적으로 학습합시다.

자바에서 데이터를
주고 받는 형식만
알아두어도 성공!

13 14 Goal
컬렉션 프레임워크 입출력 스트림

12~ 14장

여기서 다루는 내용은 자료구조나 병렬처리


등을 다루는 문법이므로 필요한 경우 해당
내용들을 심화 학습하시면 됩니다.
XIII
목차

Chapter
01 자바 시작하기

01-1 프로그래밍 언어와 자바 002

자바 소개 003
자바 개발 도구 설치 004
환경 변수 설정 008
6가지 키워드로 끝내는 핵심 포인트 013
확인 문제 013

01-2 이클립스 개발 환경 구축 015

이클립스 설치 016
워크스페이스 019
퍼스펙티브와 뷰 020
4가지 키워드로 끝내는 핵심 포인트 022
확인 문제 022

01-3 자바 프로그램 개발 과정 023

바이트 코드 파일과 자바 가상 기계 024


프로젝트 생성부터 실행까지 025
명령 라인에서 컴파일하고 실행하기 032
프로그램 소스 분석 037
주석 사용하기 038
실행문과 세미콜론(;) 039
좀 더 알아보기 제공 소스 파일 이용하기 043
6가지 키워드로 끝내는 핵심 포인트 045
확인 문제 045
Chapter
02 변수와 타입

02-1 변수 048

변수 선언 049
값 저장 050
변수 사용 052
변수 사용 범위 054
4가지 키워드로 끝내는 핵심 포인트 057
확인 문제 057

02-2 기본 타입 059

정수 타입 060
실수 타입 066
논리 타입 069
5가지 키워드로 끝내는 핵심 포인트 070
확인 문제 070

02-3 타입 변환 072

자동 타입 변환 073
강제 타입 변환 074
정수 연산에서의 자동 타입 변환 076
실수 연산에서의 자동 타입 변환 078
+ 연산에서의 문자열 자동 타입 변환 082
문자열을 기본 타입으로 강제 타입 변환 083
5가지 키워드로 끝내는 핵심 포인트 085
확인 문제 085
목차

02- 4 변수와 시스템 입출력 089

모니터로 변수값 출력하기 090


키보드에서 입력된 내용을 변수에 저장하기 092
5가지 키워드로 끝내는 핵심 포인트 098
확인 문제 098

Chapter
03 연산자

03-1 연산자와 연산식 102

연산자의 종류 103
연산의 방향과 우선순위 104
4가지 키워드로 끝내는 핵심 포인트 106
표로 정리하는 핵심 포인트 106
확인 문제 107

03-2 연산자의 종류 108

단항 연산자 109
이항 연산자 114
삼항 연산자 125
5가지 키워드로 끝내는 핵심 포인트 127
확인 문제 127
Chapter
04 조건문과 반복문

04-1 조건문: if문, switch문 134

if문 135
if-else문 136
if-else if-else문 138
switch문 141
4가지 키워드로 끝내는 핵심 포인트 145
그림으로 정리하는 핵심 포인트 145
확인 문제 146

04-2 반복문: for문, while문, do-while문 148

for문 149
while문 153
do-while문 155
break문 156
continue문 158
5가지 키워드로 끝내는 핵심 포인트 160
확인 문제 160

Chapter
05 참조 타입

05-1 참조 타입과 참조 변수 164

기본 타입과 참조 타입 165
메모리 사용 영역 166
목차

참조 변수의 ==, != 연산 168


null과 NullPointerException 169
String 타입 170
6가지 키워드로 끝내는 핵심 포인트 175
확인 문제 175

05-2 배열 177

배열이란? 178
배열 선언 179
배열 생성 180
배열 길이 185
명령 라인 입력 186
다차원 배열 190
객체를 참조하는 배열 193
배열 복사 195
향상된 for문 197
7가지 키워드로 끝내는 핵심 포인트 199
확인 문제 200

05-3 열거 타입 203

열거 타입 선언 204
열거 타입 변수 206
4가지 키워드로 끝내는 핵심 포인트 210
확인 문제 210
Chapter
06 클래스

06 -1 객체 지향 프로그래밍 212

객체의 상호작용 213


객체 간의 관계 214
객체와 클래스 215
클래스 선언 216
객체 생성과 클래스 변수 218
클래스의 구성 멤버 221
6가지 키워드로 끝내는 핵심 포인트 222
확인 문제 222

06 -2 필드 224

필드 선언 225
필드 사용 226
2가지 키워드로 끝내는 핵심 포인트 230
확인 문제 230

06 -3 생성자 232

기본 생성자 233
생성자 선언 234
필드 초기화 235
생성자 오버로딩 238
다른 생성자 호출: this( ) 241
6가지 키워드로 끝내는 핵심 포인트 244
확인 문제 244
목차

06 - 4 메소드 247

메소드 선언 248
리턴(return)문 254
메소드 호출 258
메소드 오버로딩 263
6가지 키워드로 끝내는 핵심 포인트 267
확인 문제 267

06 -5 인스턴스 멤버와 정적 멤버 270

인스턴스 멤버와 this 271


정적 멤버와 static 273
싱글톤 279
final 필드와 상수 281
7가지 키워드로 끝내는 핵심 포인트 284
확인 문제 284

06 - 6 패키지와 접근 제한자 286

패키지 선언 287
접근 제한자 293
클래스의 접근 제한 294
생성자의 접근 제한 296
필드와 메소드의 접근 제한 299
Getter와 Setter 메소드 301
4가지 키워드로 끝내는 핵심 포인트 306
확인 문제 307
Chapter
07 상속

07-1 상속 310

클래스 상속 311
부모 생성자 호출 313
메소드 재정의 317
final 클래스와 final 메소드 322
좀 더 알아보기 protected 접근 제한자 325
4가지 키워드로 끝내는 핵심 포인트 328
확인 문제 328

07-2 타입 변환과 다형성 332

자동 타입 변환 333
필드의 다형성 337
매개 변수의 다형성 345
강제 타입 변환 348
객체 타입 확인 350
5가지 키워드로 끝내는 핵심 포인트 353
확인 문제 353

07-3 추상 클래스 357

추상 클래스의 용도 358
추상 클래스 선언 360
추상 메소드와 재정의 362
2가지 키워드로 끝내는 핵심 포인트 366
확인 문제 366
목차

Chapter
08 인터페이스

08-1 인터페이스 370

인터페이스 선언 371
인터페이스 구현 374
인터페이스 사용 379
5가지 키워드로 끝내는 핵심 포인트 384
확인 문제 385

08-2 타입 변환과 다형성 386

자동 타입 변환 387
필드의 다형성 387
매개 변수의 다형성 391
강제 타입 변환 394
객체 타입 확인 396
좀 더 알아보기 인터페이스 상속 399
5가지 키워드로 끝내는 핵심 포인트 402
확인 문제 402

Chapter
09 중첩 클래스와 중첩 인터페이스

09 -1 중첩 클래스와 중첩 인터페이스 소개 406

중첩 클래스 407
중첩 클래스의 접근 제한 411
중첩 인터페이스 417
4가지 키워드로 끝내는 핵심 포인트 420
확인 문제 420

09-2 익명 객체 424

익명 자식 객체 생성 425
익명 구현 객체 생성 429
익명 객체의 로컬 변수 사용 435
2가지 키워드로 끝내는 핵심 포인트 437
확인 문제 438

Chapter
10 예외 처리

10 -1 예외 클래스 444

예외와 예외 클래스 445


실행 예외 446
4가지 키워드로 끝내는 핵심 포인트 452
확인 문제 452

10 -2 예외 처리 453

예외 처리 코드 454
예외 종류에 따른 처리 코드 457
예외 떠넘기기 460
4가지 키워드로 끝내는 핵심 포인트 463
확인 문제 463
목차

Chapter
11 기본 API 클래스

11-1 java.lang 패키지 466

자바 API 도큐먼트 467


API 도큐먼트에서 클래스 페이지 읽는 방법 469
Object 클래스 471
System 클래스 479
Class 클래스 482
String 클래스 484
Wrapper(포장) 클래스 498
Math 클래스 504
6가지 키워드로 끝내는 핵심 포인트 508
확인 문제 508

11-2 java.util 패키지 513

Date 클래스 514


Calendar 클래스 515
2가지 키워드로 끝내는 핵심 포인트 518
확인 문제 518

Chapter
12 스레드

12-1 멀티 스레드 520

스레드 521
메인 스레드 522
작업 스레드 생성과 실행 523
동기화 메소드 533
5가지 키워드로 끝내는 핵심 포인트 538
확인 문제 538

12-2 스레드 제어 541

스레드 상태 542
스레드 상태 제어 542
좀 더 알아보기 데몬 스레드 549
4가지 키워드로 끝내는 핵심 포인트 551
확인 문제 551

Chapter
13 컬렉션 프레임워크

13-1 컬렉션 프레임워크 556

List 컬렉션 557


Set 컬렉션 565
Map 컬렉션 570
4가지 키워드로 끝내는 핵심 포인트 579
확인 문제 579

13-2 LIFO와 FIFO 컬렉션 585

Stack 586
Queue 587
4가지 키워드로 끝내는 핵심 포인트 590
확인 문제 590
목차

Chapter
14 입출력 스트림

14-1 입출력 스트림 592

입출력 스트림의 종류 593


바이트 출력 스트림: OutputStream 594
바이트 입력 스트림: InputStream 597
문자 출력 스트림: Writer 602
문자 입력 스트림: Reader 608
5가지 키워드로 끝나는 핵심 포인트 613
확인 문제 613

14-2 보조 스트림 615

보조 스트림 연결하기 616


문자 변환 보조 스트림 617
성능 향상 보조 스트림 619
기본 타입 입출력 보조 스트림 623
프린터 보조 스트림 625
객체 입출력 보조 스트림 627
5가지 키워드로 끝나는 핵심 포인트 631
확인 문제 632

14-3 입출력 관련 API 634

System.in 필드 635
System.out 필드 636
Scanner 클래스 636
File 클래스 640
4가지 키워드로 끝나는 핵심 포인트 643
확인 문제 644

확인 문제 정답 645
찾아보기 680
학습목표 • 프로그래밍 언어와 자바의 개념을 이해합니다.

• 자바 개발 환경을 구축하고, 자바 프로그램 개발 순서를 배웁니다.

• 이클립스를 통해 자바 프로젝트를 생성하고, 컴파일 과정을 거쳐 바이트 코드를 실행하는


방법에 대해 알아봅니다.

01
Chapter

자바 시작하기

01-1 | 프로그래밍 언어와 자바 001 기본편


01-1 프로그래밍 언어와 자바

핵심 키워드 기계어 프로그래밍 언어 소스 파일 컴파일 JDK 환경 변수

컴퓨터에서 실행하는 프로그램(program)은 특정 목적을 수행하도록 프로그래밍


언어로 작성된 소스를 기계어로 컴파일한 것입니다. 이번 절에서는 프로그래밍 언
어의 역할에 대해 알아보고, 자바 언어로 프로그램을 개발할 수 있는 환경을 만들
어보겠습니다.

시작하기 전에

컴퓨터가 이해할 수 있는 기계어machine language는 우리가 일상생활에서 사용하는 언어와는 너무나도 다


른 0과 1로 이루어진 이진 코드를 사용합니다. 사람이 이해하기에는 매우 어렵죠. 반대로 사람이 사
용하는 언어는 컴퓨터 입장에서 보면 이해할 수 없는 문자의 집합입니다. 그렇기 때문에 사람과 컴퓨
터가 대화하기 위해서는 사람의 언어와 기계어의 다리 역할을 하는 프로그래밍 언어가 필요합니다.

프로그래밍 언어로 작성한 파일을 소스 source 파일이라고 합니다. 소스 파일은 컴퓨터가 바로 이해할 수
없기 때문에 컴파일 compile이라는 과정을 통해서 0과 1로 이루어진 기계어 파일로 번역한 후에 컴퓨터
에서 사용합니다.

소스 파일

프로그래밍 class Calculator {


언어로 public static void main(String[] args) {
소스 파일 작성 int result = 10 + 20;
System.out.println(result);
}
}

내가 아는
기계어 기계어

실행 0010011100010 컴파일
0010010010000 컴파일러
1101110000111

기본편 002 Chapter 01 | 자바 시작하기


자바 소개
프로그래밍 언어에는 많은 종류가 있습니다. 대표적으로 자바 Java, C, C++, C#, 파이썬Python 등이 있
습니다. 이 프로그래밍 언어들이 제공하는 기능은 조금씩 다르기 때문에 어떤 언어가 가장 우수하다
고 말할 수는 없습니다.

프로그래밍 언어

자바 C C++ C# 파이썬

자바는 1995년도에 처음 썬 마이크로시스템즈 Sun Microsystems에서 발표한 후, 가장 성 웹 애플리케


공한 프로그래밍 언어로서 전세계적으로 다양한 분야에서 사용되고 있습니다. 안드로 이션 구축용
언어로는 자
이드폰에서 실행하는 애플리케이션뿐만 아니라 웹사이트를 개발하는 핵심 언어로 바가 최고!

사용되며, 모든 운영체제에서 실행 가능한 데스크톱 애플리케이션 개발에도 사용할


수 있습니다.

안드로이드 게임 애플리케이션

드론 제어를 위한
데스크톱 애플리케이션 개발 웹사이트

개발 개발
자바

자바는 오라클 https://www.oracle.com에서 라이선스를 가지고 있습니다. 오라클은 자바 개발 도구 JDK: Java


Development Kit 를 배포하여 자바로 프로그램을 쉽게 개발할 수 있도록 기술적 지원을 하고 있습니다.

자바는 다음과 같은 특징을 가지고 있습니다.

● 모든 운영체제에서 실행 가능
자바로 작성된 프로그램은 모든 운영체제에서 실행 가능합니다. 따라서 윈도우에서 개발된 프로
그램을 수정하지 않고 바로 리눅스에서도 실행할 수 있다는 장점이 있습니다.

01-1 | 프로그래밍 언어와 자바 003 기본편


● 객체 지향 프로그래밍
객체(부품)를 만들고, 이 객체들을 서로 연결해서 더 큰 프로그램을 완성하는 기법을 객체 지향 프
로그래밍 OOP : Object -Oriented Programming이라고 합니다. 자바는 객체 지향 프로그래밍을 위한 최적의
언어입니다.

● 메모리 자동 정리
자바는 메모리(RAM)를 자동 관리하므로, 개발자는 메모리를 관리하는 수고를 덜고 핵심 기능인
코드 작성에 집중할 수 있습니다.

● 무료 라이브러리 풍부
무료로 다운로드해서 사용할 수 있는 오픈 소스 라이브러리open source library가 풍부하기 때문에 프로
그램 개발 기간을 단축합니다.

자바 개발 도구 설치
자바로 프로그램을 개발하기 위해서는 먼저 자바 개발 도구 JDK: Java Development Kit를 설치해야 합니다. 쉽
게 설치 가능한 JDK에는 Open JDK와 Oracle JDK가 있으며, 프로그램을 개발하거나 학습용으
로 사용할 때에는 둘 다 무료로 사용이 가능합니다.

반면 상업용으로 판매하는 프로그램 속에 JDK 를 포함시키거나 상업용 웹사이트를 운영한다면


Open JDK는 무료로 사용 가능하지만, Oracle JDK는 오라클에 사용료를 지불하고 사용해야 합
니다.

구분 Open JDK Oracle JDK


GNU GPL version 2, Oracle Technology Network License
라이선스 종류
with the Classpath Exception Agreement for Oracle Java SE
사용료 개발 및 학습용: 무료, 상업용: 무료 개발 및 학습용: 무료, 상업용: 유료

Open JDK를 기반으로 해서 만든 것이 Oracle JDK이므로 둘 사이에 사용상의 차이점은 거의 없


습니다. 다만 Oracle JDK는 오라클의 LTS Long Term Support: 장기 지원 서비스가 제공되므로 기술 지원 및
버그를 개선한 업데이트 버전을 꾸준히 받을 수 있다는 장점이 있습니다. 학습용으로는 둘 다 무료이
니 안정적인 Oracle JDK를 사용하는 것이 좋습니다.

기본편 004 Chapter 01 | 자바 시작하기


01 Oracle JDK 설치 파일을 다운로드하기 위해 오라클 웹사이트(https://www.oracle.com)
에 접속한 후 [Downloads] 버튼을 클릭합니다.

02 [Developer Downloads]에서 [Java] - [Java (JDK) for Developers] 메뉴를 순서대로


선택합니다.

03 JDK는 여러 가지 버전으로 제공됩니다.


JDK는 Java SE(Standard Edition)라
는 스펙을 준수해서 만들어지므로 JDK
버전과 Java SE 버전은 동일합니다.
Java SE 버전은 다음과 같이 표기되어
있습니다.

Java SE 11. 0. 2 (LTS)

주 버전 개선 버전 업데이트 버전 장기 지원 서비스 버전

● 주 버전: 자바 언어에 많은 변화가 있을 경우 증가됩니다.


●  선 버전: 0부터 시작하고 주 버전에서 일부 사항이 개선될 때 증가됩니다. 보통은 모두 0입

니다.

01-1 | 프로그래밍 언어와 자바 005 기본편


●  데이트 버전: 1~3개월 주기로 버그가 수정될 때마다 증가합니다.

● L
 TS : 장기 지원 서비스 Long Term Support를 받을 수 있는 버전을 말합니다.

JDK 버전 설명

Java SE 12 주 버전이 12

주 버전이 11이고, 수정이 2번 되었음


Java SE 11.0.2 (LTS)
장기 지원 서비스를 제공받을 수 있는 버전

Java SE 8u202 주 버전이 8이고, 수정이 202번 되었음

예외적으로 Java SE 8은 다른 버전 표기법을 사용합니다. Java SE 8 다음에 u는 업데이트를 말하


며 뒤의 숫자는 업데이트된 횟수를 말합니다.

✚ 여기서 잠깐 Java 버전

흔히 Java 8, Java 11이라고 부르기도 하는데, 이것은 언어에 중점을 두고 부르는 이름입니다. Java 11을 설치한다는
것은 Java SE 11 또는 JDK 11을 설치한다는 것과 동일한 의미입니다. 그리고 Java 8일 경우 Java SE 1.8 또는 JDK
1.8과 동일합니다.

특별한 이유가 없는 한 주 버전이 가장 높은 것보다는 버그를 지속적으로 수정해나가는 LTS 버전을


사용할 것을 추천드립니다.

설치할 JDK 버전을 결정했다면 [DOWNLOAD] 버튼을 클릭하여 운영체제별로 설치 파일을 다운


로드하면 됩니다. 이 책을 학습하기 위해서는 Java 8 이상의 JDK 설치 파일을 다운로드합니다.

✚ 여기서 잠깐 운영체제 사양 확인

다운로드하기 전에 윈도우 운영체제의 사양을 확인하려면 파일 탐색기를 열고 [내 PC]에서 마우스 오른쪽 버튼을 클릭한
후 [속성]을 선택합니다.

기본편 006 Chapter 01 | 자바 시작하기


04 다음은 Java SE 11.0.2의 다운로드 목록
입니다. 상단에서 라이선스에 동의한다는
버튼을 클릭하고 설치할 PC 사양에 맞는
파일을 다운로드하면 됩니다. 64비트 윈도
우 운영체제를 사용한다면 jdk-11.0.2_
windows-x64_bin.exe를 다운로드합
니다.

✚ 여기서 잠깐 32비트 JDK 다운로드

Java SE 11 부터는 32 비트 윈도우 운영체제를 지원


하지 않습니다. 32 비트 윈도우 운영체제는 Java SE
8 을 다운로드해야 합니다. Java SE 8 은 32 비트용
Windows(x86)와 64비트용 Windows(x64)로 구분해
서 설치 파일을 제공합니다.

05 파일 탐색기에서 다운로드한 JDK 설치 파일을 실행하고, 각 화면에서 [Next] 버튼을 클릭해


서 기본 설치를 진행합니다. Java SE 11일 경우 다음과 같습니다.

01-1 | 프로그래밍 언어와 자바 007 기본편


06 설치가 완료되면 JDK는 C:\Program Files\Java 경로에 버전별로 저장됩니다.

● Java SE 11 버전일 경우: C :\Program Files\Java\jdk -11.0.2


● Java SE 8 버전일 경우: C :\Program Files\Java\jdk1.8.0_202

환경 변수 설정
JAVA _HOME 환경 변수 등록

JDK가 설치된 폴더(C:\Program Files\Java\jdk-11.0.2)를 일반적으로 JAVA_HOME이라고


말합니다. 어떤 프로그램은 설치된 JDK의 위치를 찾을 때 JAVA_HOME 환경 변수를 이용하기 때
문에 JAVA_HOME 환경 변수를 만들고, JDK 설치 폴더를 등록하는 것이 좋습니다.

윈도우 운영체제에서 환경 변수를 변경할 때에는 [시스템 속성] 대화상자를 이용합니다. 윈도우 버전
별로 [시스템 속성] 대화상자를 실행하는 방법은 다음과 같습니다.

윈도우 버전 [시스템 속성] 대화상자 실행 방법

Windows 7 시작 → 제어판 → 시스템 및 보안 → 시스템 → 고급 시스템 설정

Windows 8 화면 오른쪽 아래로 마우스 포인터 옮김 → 설정 → 제어판 → Windows 7과 동일

Windows 10 검색 → ‘제어판’ 입력 후 선택 → Windows 7과 동일

01 [시스템 속성] 대화상자가 실행되면 [고


급] 탭을 선택하고, [환경 변수] 버튼을
클릭합니다.

기본편 008 Chapter 01 | 자바 시작하기


02 [환경 변수] 대화상자가 나타나면 [시스
템 변수]에서 [새로 만들기] 버튼을 클
릭합니다.

03 [새 시스템 변수] 대화상자가 나타나면 [변수 이름]에 ‘JAVA_HOME’을 입력하고, [변수 값]


에 JDK가 설치된 경로를 입력합니다. 완료되면 적용하기 위해 모든 대화상자에서 [확인] 버튼
을 클릭합니다.

note 윈도우 10일 경우, [변수 값]을 직접 입력하는 것보다는 하단에 있는 [디렉터리 찾아보기] 버튼을 클릭해서 JDK가 설치
된 폴더를 지정하면 편리합니다.

Path 환경 변수 수정

파일 탐색기에서 JDK 설치 폴더를 보면 bin 폴더가 있습니다. bin 폴더 안에는 다양한 명령어들
이 있는데, 대표적으로 자바 소스 파일을 컴파일해주는 javac 명령어와 컴파일된 파일을 실행해주는
java 명령어가 있습니다.

01-1 | 프로그래밍 언어와 자바 009 기본편


javac와 java 명령어는 명령 프롬프트(cmd.exe)의 명령 라인에서 개발자가 직접 컴파일하고 실행
할 때 사용됩니다. 문제는 bin 폴더 안에 있기 때문에 다른 폴더에서 실행할 수 없다는 것입니다. 다
른 폴더에서 실행하려면 다음과 같이 환경 변수 Path에 bin 폴더를 등록해야 합니다. 다음은 윈도우
10에서 Path 환경 변수에 bin 폴더를 등록하는 순서입니다.

01 [환경 변수] 대화상자의 [시스템 변수]에서


Path 환경 변수를 선택하고 [편집] 버튼을 클
릭합니다.

02 [환경 변수 편집] 대화상자가 나타나면 [새로


만들기] 버튼을 클릭하고 추가된 항목에 직접
‘%JAVA_HOME%\bin’을 입력합니다.

note ‘%JAVA_HOME%’은 JAVA_HOME 환경 변수의 값을


사용한다는 의미입니다. JAVA_HOME이 C:\Program Files\
Java\jdk-11.0.2이므로 %JAVA_HOME%\bin은 C:\Program
Files\Java\jdk-11.0.2\bin이 됩니다.

기본편 010 Chapter 01 | 자바 시작하기


03 입력을 끝내면 등록된 [%JAVA_HOME%\
bin]을 선택하고 [위로 이동] 버튼을 클릭해
서 첫 번째 항목으로 올려줍니다. 이제 모든
대화상자의 [확인] 버튼을 클릭해서 환경 변
수 설정을 마칩니다.

note 첫 번째 항목으로 위치시키는 이유는 명령 라인에서 명령어를 찾을 때, Path 환경 변수에 등록된 순서대로 찾기 때문입
니다. 만약 %JAVA_HOME%\bin보다 먼저 등록된 폴더에 java 명령어가 있다면 다른 버전의 java 명령어가 사용될 수 있습니다.

✚ 여기서 잠깐 윈도우 10 하위 버전에서의 환경 변수 편집

윈도우 10 하위 버전에서는 [환경 변수 편집] 대화상자가 다음과 같이 다르게 나타납니다. 이 경우에도 등록 순서가 중요하므
로 [변수 값]의 맨 앞으로 이동해서 ‘%JAVA_HOME%\bin’을 입력하고, 경로를 구분하기 위해 세미콜론(;)을 붙여줍니다.

참고로 윈도우 10에서도 [환경 변수 편집] 대화상자의 [텍스트 편집] 버튼을 클릭하면 동일한 대화상자가 나타납니다.

04 환경 변수가 올바르게 설정되었는지 확인하기 위해 명령 프


롬프트(cmd.exe)를 실행합니다. [시작] 버튼 바로 옆에 있
는 [검색] 버튼을 클릭하고 입력란에 ‘명령’ 또는 ‘cmd’를 입
력한 후 [명령 프롬프트]를 선택해서 실행할 수 있습니다.

note 윈도우 10 하위 버전인 7에서는 [시작] 버튼을 클릭하고 [프로그램 및 파일 검


색] 입력란에 ‘명령’ 또는 ‘cmd’를 입력하면 [명령 프롬프트] 또는 [cmd.exe]를 선택
할 수 있습니다.

01-1 | 프로그래밍 언어와 자바 011 기본편


<혼자 공부하는> 시리즈

혼자 해도 충분하다!
1:1 과외하듯 배우는 프로그래밍 자습서

1 2 3
‘혼자 공부’할 수 있는 245개의 쉬운 문제부터 도전 문제까지!
7단계 구성으로 손코딩 예제로 스스로 해결하며

체계적인 반복 직접 해보는 오래 기억하는


학습 학습 학습

독자의 한 마디

• 핵심 위주로 알려줘서 이제 막 자바를 배우기 시작한 입문자도 중간에 포기하지 않고 완독할 수 있을 것 같아요. _ 최예소라 님

• 이 책은 용어 하나조차도 쉽게 설명하려고 신경을 쓴 것 같습니다. 적절한 예로 풀어내서 오래 기억할 수 있을 것 같고요. _김준우 님

• 자바 환경 설정부터 본문 설명에 대한 예시, 코드 주석 등 모든 것이 자세하게 설명되어 있고, 어렵지 않게 술술 잘 읽힙니다. _ 정수현 님

• 설명과 샘플 코드, 도식 등이 골고루 담겨 있어 지루하지 않았습니다. _ 구자돈 님

• 각 장 마지막에 포인트를 정리해둔 페이지가 많은 도움이 됐어요. 앞에서 공부한 내용을 한번에 복습할 수 있었어요. _ 안정은 님

• 기존 책과 달리 이 책은 중요한 부분을 중심으로 설명한 것이 좋았습니다.

진도가 수월하게 나가다보니 학습에 대한 흥미를 유지하고 완독할 수 있었습니다. _ 김종민 님

프로그래밍 언어/자바

정가 24,000원

You might also like