01 Java의 핵심 가치: 플랫폼 독립성, 객체지향, 견고한 생태계 Java를 단순 문법 암기가 아니라 플랫폼 독립성, 객체지향 모델링, 백엔드 생태계로 이어지는 기반 언어로 이해한다. KT AIVLE School
Java
JVM과 기본 문법에서 객체지향, 예외, 컬렉션, Stream까지 이어지는 Java 산문
- 원고
- 33
- 8월 25일-9월 24일
- 0편
01 Java의 핵심 가치: 플랫폼 독립성, 객체지향, 견고한 생태계 Java를 단순 문법 암기가 아니라 플랫폼 독립성, 객체지향 모델링, 백엔드 생태계로 이어지는 기반 언어로 이해한다.
02 자바 개발 환경 해부: JDK, JRE, JVM, IDE의 비밀 JDK는 개발 도구, JRE는 실행 환경, JVM은 바이트코드를 실행하는 엔진이며 IDE는 이 과정을 편하게 다루는 작업대라는 점을 이해한다.
03 Main 클래스, main 메서드, println으로 첫 Java 프로그램 읽기 main 메서드는 JVM이 프로그램을 시작할 때 호출하는 입구이고, println/escape/comment는 화면 출력과 코드 설명을 위한 첫 도구라는 점을 이해한다.
04 변수: 값에 이름 붙이는 마법 변수 선언은 어떤 종류의 값을 담을지 정하고, 초기화는 실제 값을 넣으며, 이름 규칙은 코드를 읽는 사람을 위한 약속이라는 점을 이해한다.
05 정수, 실수, 문자, boolean 자료형: 무엇을 선택할까요? 자료형은 값의 성격과 필요한 표현 범위에 맞춰 고르는 선택이며, 기본형은 숫자/문자/참거짓을 나누어 안전하게 다룬다는 점을 이해한다.
06 String 탐구: 혼란을 넘어 안전하게 다루는 법 String은 텍스트 값을 표현하는 객체이며, 연결과 메서드 사용, equals 비교를 통해 문자열을 안전하게 다루는 방법을 이해한다.
07 자동/강제 형 변환과 String 숫자 변환: 혼란 끝! 명확한 구별법 자동 형 변환은 안전한 확장, 강제 형 변환은 손실 가능성을 감수한 명시적 변환이며, String과 숫자 변환은 별도의 메서드로 처리한다는 점을 이해한다.
08 Scanner 입력을 위한 세 가지 질문: import, 객체 생성, System.in Scanner는 java.util 패키지의 입력 도구이고, import는 도구를 가져오는 일이며, Scanner 객체는 키보드 입력 통로를 여는 일이라는 점을 이해한다.
09 Scanner의 다양한 얼굴: next(), nextLine(), close() 완전 정복 Scanner 메서드는 읽을 값의 형태에 따라 달라지고, nextLine은 한 줄 전체를 읽으며, close는 입력 자원을 정리하는 단계라는 점을 이해한다.
10 Java 계산식, 루나와 함께 읽어요! 산술 연산자는 계산식을 만들고, 우선순위와 괄호는 계산 순서를 정하므로 작은 계산기 프로그램도 실행 흐름을 정확히 읽어야 한다는 점을 이해한다.
11 증감 연산자와 복합 대입: 값 변화 시점 예측 증감 연산자는 변화 시점이 중요하고, 복합 대입 연산자는 기존 값에 계산을 누적하는 축약 표현이라는 점을 이해한다.
12 논리적 조건문을 꿰뚫는 단락 평가 비교 연산자는 하나의 판단을 만들고, 논리 연산자는 판단들을 조합하며, 단락 평가는 결과가 정해지면 뒤 조건을 보지 않는 실행 규칙이라는 점을 이해한다.
13 if, else, else if로 조건 흐름 나누기: 왜 한 번만 실행될까? if 계열 조건문은 위에서 아래로 조건을 검사하며, 처음 만족한 분기만 실행하고 나머지를 건너뛰는 선택 흐름이라는 점을 이해한다.
14 switch-case와 break로 메뉴 선택 흐름 만들기 switch-case는 하나의 기준값을 여러 case와 비교하는 분기문이며, break는 선택된 case 실행 후 흐름을 멈추는 안전장치라는 점을 이해한다.
15 for 문으로 정해진 횟수만큼 반복하기: 실행 순서 해부하기 for 문은 반복 변수의 시작, 계속 여부, 변화 규칙을 한곳에 모아 정해진 횟수의 반복을 제어한다는 점을 이해한다.
16 while 문, 조건에 따라 반복하고 입력으로 종료하기 while 문은 반복 횟수가 미리 정해지지 않고 조건이 계속 참인지 확인해야 할 때 쓰며, 입력 값이 종료 신호가 되는 흐름을 이해한다.
17 do-while, 무한 루프, break/continue로 반복 제어하기 do-while은 최소 1회 실행, 무한 루프는 의도적으로 끝나지 않는 반복, break와 continue는 반복을 끝내거나 이번 회차만 건너뛰는 제어문이라는 점을 구분한다.
18 배열 선언, 생성, 인덱스로 여러 값 다루기 배열은 같은 성격의 값을 순서 있는 칸에 담고, 인덱스로 각 칸을 읽고 쓰며, 반복 전 여러 값을 묶는 첫 자료구조라는 점을 이해한다.
19 배열과 반복문, length로 성적 처리하기 배열은 반복문과 결합될 때 여러 값을 같은 규칙으로 처리할 수 있고, length는 배열 크기 변화에 덜 흔들리는 반복 기준이 된다는 점을 이해한다.
20 메서드: 반복을 줄이고 약속을 만드는 코드의 설계 메서드는 반복되는 기능에 이름을 붙여 재사용하는 단위이며, 정의는 약속을 만드는 일이고 호출은 그 약속을 실행하는 일이라는 점을 이해한다.
21 메서드 오버로딩과 반환의 비밀 오버로딩은 호출 인자의 모양으로 메서드를 구분하는 방식이며, 반환형과 return 규칙은 메서드 계약의 일부라는 점을 이해한다.
22 클래스, 객체, 필드, 메서드의 기본 관계 클래스는 타입/설계도, 객체는 인스턴스, 필드는 상태, 메서드는 동작이며 new와 도트 연산자로 객체를 만들고 사용하는 흐름을 이해한다.
23 캡슐화, 단순 숨기기가 아닌 객체의 보호 캡슐화는 단순 숨기기가 아니라 객체가 자기 상태를 잘못된 값으로부터 보호하기 위한 구조이며, setter 검증이 그 핵심이라는 점을 이해한다.
24 생성자, this, 생성자 오버로딩과 초기 상태 검증 생성자는 객체 생성 순간의 초기화 계약이고, this는 현재 객체의 필드를 가리키며, 생성자에서도 검증을 재사용해 처음부터 안전한 객체를 만들 수 있다는 점을 이해한다.
25 static과 인스턴스 멤버: 객체 vs. 클래스, 누구에게 속할까? 인스턴스 멤버는 객체마다 따로 존재하고 static 멤버는 클래스에 하나만 존재하거나 객체 없이 호출되는 공유/유틸리티 성격이라는 점을 이해한다.
26 상속의 본질과 Java 키워드 분리 이해하기 상속은 공통 멤버를 부모에 모아 중복을 줄이고, extends는 관계 선언, super는 부모 초기화, protected는 자식에게 열어주는 접근 범위라는 점을 이해한다.
27 솔라, 오버라이딩-다형성의 숨겨진 원리를 꿰뚫다 오버라이딩은 자식이 같은 메서드를 다시 정의하는 일이고, 업캐스팅과 다형성은 부모 타입으로 여러 자식을 같은 코드로 다루되 실행 시 실제 객체의 동작을 호출하는 구조임을 이해한다.
28 인터페이스, extends, implements: 객체의 '종류'와 '역할'을 명확히 클래스 상속은 종류를 나타내고 인터페이스 구현은 역할을 나타내며, Java는 하나의 부모만 상속하지만 여러 인터페이스 역할은 구현할 수 있다는 점을 이해한다.
29 인터페이스 타입 변수, DI, Spring Boot 자동 주입: 결제 시스템으로 미리보기 인터페이스에 의존하면 구현체 교체가 쉬워지고, 생성자로 외부 구현체를 받는 수동 DI가 Spring Boot 자동 주입의 기초 패턴이라는 점을 이해한다.
30 멈추지 않는 프로그램: 예외 처리 마스터하기 예외는 실행 중 발생한 문제 객체이고, try-catch는 그 문제를 잡아 처리하며, finally는 항상 실행되고, 다중 catch는 구체적인 예외부터 처리해야 한다는 점을 이해한다.
31 예외 처리, 방향을 찾다: throw, throws, 사용자 정의 RuntimeException throw는 잘못된 상태를 발견한 코드가 예외 객체를 던지는 일이고, RuntimeException 기반 사용자 정의 예외는 비즈니스 의미를 이름으로 드러내는 Spring식 패턴이라는 점을 이해한다.
32 데이터 모음, 이제는 컬렉션! 컬렉션은 크기 조절과 추가/삭제/검색 메서드를 제공하고, List는 순서 있는 모음, Map은 키-값 모음이며, 제네릭은 담을 타입을 명시하는 약속이라는 점을 이해한다.
33 람다, Stream, Optional로 데이터 처리 의도 드러내기 람다는 짧은 함수 표현이고, Stream은 필터링/변환/수집의 데이터 처리 흐름이며, Optional은 null 위험 대신 값의 존재 여부를 명시하는 Spring Boot 표준 감각이라는 점을 이해한다.