『방구석 부트캠프 자바』는 자바를 실용적이고 체계적으로 학습하기 위한 입문서다. 코딩은 AI가 더 잘하는 시대가 맞지만, AI 시대에 필요한 종합적인 개발자 역량은 단순한 코딩 기술을 넘어, 복잡한 문제를 창의적으로 해결하는 능력, 프로젝트 전체를 조망하고 효과적으로 협업할 수 있는 의사소통 능력, 그리고 빠르게 변화하는 기술 환경에 적응하며 지속적으로 학습할 수 있는 자기 주도적 학습 능력이 요구된다. 무엇보다 AI 도구를 효과적으로 활용하여 업무 효율성을 높이는 것은 AI 시대를 살아가는 개발자의 필수 역량이다. 이 책은 그러한 흐름에 발맞춰 단순히 자바 언어의 문법, 명령어 등과 같은 기술 습득에 그치지 않고 만들고자 하는 것을 논리적 사고 단계에 따라 하나씩 업그레이드하면서 상황에 맞게, 예측할 수 있게, 읽기 편하게 코딩하는 방법을 알려주는 것에 초점을 맞추고 있다.
자바의 모든 것을 알려주고 있다고 할 순 없지만 적어도 이 책으로 자바를 시작한 독자가 포기하지 않고 끝까지 학습한 후, 이 책에서 이해한 것을 바탕으로 프로그래밍에 흥미를 느끼고 더 공부해 보고 싶다고 느끼도록 하는 것을 목표로 한다. 프로그래밍을 처음 시작한다면, 자바를 처음 시작한다면 더도 덜도 말고 딱 58일 과정으로 구성된 체계적인 학습 구조를 통해 프로그래밍에 입문할 수 있기를 바란다.
Contents
CHAPTER 01 자바 프로그래밍 틀잡기
[DAY 01] 자바와 객체 지향 프로그래밍 알아보기
_객체 지향 프로그래밍을 배워 볼 필요
_객체 지향 프로그래밍 언어, 자바
_객체의 의미
_추상화의 의미
[DAY 02] 개발 환경 구축하기
_인텔리제이를 쓰는 이유
_인텔리제이 설치하기
_인텔리제이 실행하기
_인텔리제이에서 프로젝트 만들기
_인텔리제이 프로젝트 화면 살펴보기
_인텔리제이 환경 설정하기
[DAY 03] Hello를 출력하는 기능 만들기
_클래스 선언하기
_메서드 선언하기
_명령 추가하기
_메인 메서드 만들기
_인스턴스화하기
_Hello 대신 1+1 출력하기
CHAPTER 02 입력과 출력
[DAY 04] 한 글자씩 입력받기
_프로그래밍에서 입력받는다는 것의 의미
_InputStreamReader로 입력받기
_아스키 코드의 역할
_주석의 작동 원리
_두 글자씩 데이터 입력받기
[DAY 05] 버퍼를 이용해 한 줄 단위로 입력받기
_BufferedReader로 입력받기
_두 개의 숫자 입력받기
_입력받은 숫자 더하기
[DAY 06] 숫자형 데이터를 입력받아 안내문 출력하기
_Scanner로 입력받은 정수 더하기
_Scanner로 입력받은 문자 합치기
_입력 시 안내문 출력하기
[DAY 07] 여러 가지 방법으로 출력하기
_메인 메서드에서 바로 실행하기
_printf()로 포매팅해서 출력하기
_한 줄 띄우기
_소수점 출력하기
[DAY 08] 입력과 출력 활용하기(종합 예제)
_입력받은 세 개의 숫자 평균 구하기
_입력받은 값을 곱해서 세 자리마다 ,로 구분해서 출력하기
CHAPTER 03 변수와 타입
[DAY 09] 변수를 선언하고 초기화하기
_변수의 의미
_타입의 의미
_변수의 크기
_변수가 필요한 경우
_변수 선언하기
_변수 초기화하기
_변수 선언과 초기화를 한 번에 하기
_상수 선언과 값 할당하기
_강타입 언어 vs 동적 타입 언어
[DAY 10] 변수와 상수 활용하기(종합 예제)
_변수에 값을 담아 출력하기
_변수에 담았던 값 출력하기
_변수에 담긴 값 바꾸기
[DAY 11] 멤버 변수 알아보기
_멤버 변수의 의미
_멤버 변수가 필요한 경우
_멤버 변수 선언하기
_멤버 변수로 접근하기
_가비지 컬렉션
[DAY 12] 멤버 변수 활용하기(종합 예제)
_2D 좌표 평면상의 점 표현하기
_User를 클래스와 멤버 변수로 표현하기
_공장(Factory)을 클래스와 멤버 변수로 표현하기
[DAY 13] 숫자와 논리를 나타내는 타입 알아보기
_원시 타입과 참조 타입
_적절한 타입 사용의 중요성
_소수점을 다루는 float와 double
_true와 false를 저장하는 boolean 타입
[DAY 14] 데이터 타입을 변환하는 타입 캐스팅
_원시 타입 간 타입 캐스팅하기
_문자열(String)을 정수형(int)으로 타입 캐스팅하기
_소수점 문자열을 실수형으로 변환하기
[DAY 15] 문자열을 나타내는 String 타입 알아보기
_문자열 연결하기
_문자열 포매팅하기
_문자열 자르기
_문자열 비교하기
_문자열에서 문자열의 위치
_문자열 분리하기
CHAPTER 04 배열
[DAY 16] 배열 알아보기
_배열 선언하기
_배열을 선언하면서 초기화하기
_배열 값에 접근하기
_배열에 값 할당하기
_여러 가지 타입의 배열 선언하기
_참조 타입의 배열 선언하기
_배열을 멤버 변수로 사용하기
[DAY 17] 2차원 배열 알아보기
_2차원 배열 선언하기
_2차원 배열 값에 접근하기
_2차원 배열에 값 할당하기
_배열의 길이
_2차원 배열의 길이
[DAY 18] 2차원 배열 활용하기(종합 예제)
_가로 한 줄에 값 채우기
_세로 한 줄에 값 채우기
_배열 인덱스 간에 값 바꾸기
_한 줄로 숫자를 입력받아서 합계 구하기
CHAPTER 05 연산자
[DAY 19] 연산자 알아보기
_연산자와 피연산자
_연산자의 특징
_연산자의 종류
_연산자의 우선순위
[DAY 20] 산술 연산자 알아보기
_사칙 연산자와 나머지 연산자의 종류
_숫자를 산술 연산하기
_변수를 산술 연산하기
[DAY 21] 산술 연산자 활용하기(종합 예제)
_배열의 중간에 있는 숫자 구하기
_초를 "분:초"로 표현하기
_나머지 구하기
[DAY 22] 대입 연산자 알아보기
_변수에 값 누적하기
_문자열 누적하기
_10으로 나눈 결과를 누적해 자릿수 더하기
[DAY 23] 복합 대입 연산자와 증감 연산자 알아보기
_복합 대입 연산자의 종류
_복합 대입 연산자로 변수에 값 누적하기
_자릿수 더하기에 복합 대입 연산자 적용하기
_증감 연산자의 종류
_증감 연산자로 변수 값 증감시키기
[DAY 24] 대입, 복합 대입, 증감 연산자 활용하기(종합 예제)
_대입 연산자로 배열에 있는 모든 값 더하기
_증감 연산자로 배열의 인덱스 값 출력하기
_복합 대입 연산자로 복리 계산하기
[DAY 25] 비교 연산자, 논리 연산자, 조건 연산자 알아보기
_비교 연산자의 종류
_비교 연산자로 변수 값 비교하기
_논리 연산자의 종류
_AND 연산자로 조건 비교하기
_OR 연산자로 조건 비교하기
_NOT 연산자로 조건 비교하기
_조건 연산자
[DAY 26] 비교, 논리 연산자 활용하기(종합 예제)
_비교 연산자로 배열 값 간 비교하기
_AND 연산자로 보일러 온도 체크하기
_OR 연산자로 승진 가능 여부 확인하기
_NOT 연산자로 미성년자 여부 확인하기
CHAPTER 06 제어문
[DAY 27] if문 알아보기
_if문 사용하기
_비교 연산으로 논리값 받기
_논리 연산으로 논리값 받기
_else 사용하기
_else if 사용하기
[DAY 48] 상속과 오버라이딩 알아보기
_상속 사용 방법
_메서드 오버라이딩하기
_메서드 오버라이딩으로 관리자 계정 만들기
[DAY 49] 추상 클래스 알아보기
_추상 클래스 선언하기
_추상 클래스를 상속받아 구현하는 방법
_추상 클래스 사용하기
[DAY 50] 추상 클래스 활용하기(종합 예제)
_직각삼각형 모양으로 별표 출력하기
_피라미드 모양으로 별표 출력하기
CHAPTER 10 인터페이스
[DAY 51] 인터페이스 알아보기
_인터페이스 선언하기
_인터페이스 구현하기
_인터페이스를 사용하는 이유
[DAY 52] 인터페이스 다중 상속하기
_다중 상속 구현하기
_다중 상속 사용하기
[DAY 53] 인터페이스 활용하기(종합 예제)
_ 최대 값 구하기
_최대 값을 이용해 최소 값 구하기
_인터페이스로 최대 값과 최소 값 동시에 구하기
[DAY 54] 의존성 주입 활용하기
_의존성 주입 적용하기
_변수를 선언하지 않고 의존성 주입하기
_익명 클래스 사용하기
_람다 표현식 사용하기
CHAPTER 11 자바 더 알아보기
[DAY 55] 제네릭 알아보기
_제네릭 선언 방법
_인터페이스에 제네릭 적용하기
_두 개 이상의 타입을 받는 인터페이스에 제네릭 적용하기
_클래스에 제네릭 적용하기
_내장 인터페이스에 제네릭 적용하기
_일반적으로 사용하는 타입 매개변수
[DAY 56] enum 알아보기
_열거 타입 선언 방법
_열거 타입의 상수에 값 지정하기
_switch 표현식에 열거 타입 활용하기
[DAY 57] 예외 알아보기
_예외 처리란
_예외 처리하기
_catch 소괄호 블록에 있는 변수 사용하기
_예외 발생 여부와 상관 없이 코드 실행하기
_throws를 이용한 예외 처리하기
_예외 처리 활용하기
_예외와 에러의 차이점
[DAY 58] 람다 표현식 알아보기
_람다 표현식 선언 방법
_매개변수가 없는 인터페이스 구현하기
_매개변수가 한 개인 인터페이스 구현하기
_매개변수가 두 개인 인터페이스 구현하기
_람다 표현식의 제약사항
Author
김경록
12년에 걸쳐 백엔드 , 프론트엔드 , 인프라 , DB에 기반을 두고 다양한 프로젝트를 경험하고 있다. 현재는 스마트 팩토리 기업 3View에서 백엔드 & 임베디드 개발자로 일하고 있다. 저서로는 『파이썬으로 익히는 말랑말랑 알고리즘 』(비제이퍼블릭, 2022), 『한입에 웹 크롤링 』(비제이퍼블릭, 2018), 『Node.js 200제』(정보문화사, 2018), 역서로는 『웹 데이터 수집의 기술』(한빛미디어, 2017) 등이 있다.
12년에 걸쳐 백엔드 , 프론트엔드 , 인프라 , DB에 기반을 두고 다양한 프로젝트를 경험하고 있다. 현재는 스마트 팩토리 기업 3View에서 백엔드 & 임베디드 개발자로 일하고 있다. 저서로는 『파이썬으로 익히는 말랑말랑 알고리즘 』(비제이퍼블릭, 2022), 『한입에 웹 크롤링 』(비제이퍼블릭, 2018), 『Node.js 200제』(정보문화사, 2018), 역서로는 『웹 데이터 수집의 기술』(한빛미디어, 2017) 등이 있다.