홈 > 강의소개
JAVA 프로그래밍Ⅰ
박길식 교수
동국대학교 대학원 컴퓨터공학과 박사(인공지능)
동국대 인공지능협업센터 연구교수
동국대학교 대학원 컴퓨터공학과 박사(인공지능)
동국대 인공지능협업센터 연구교수
동국대학교
삼성전자 인재개발원
현) 유니와이즈 전임교수
AI가 이끄는 스마트한 학습 경험, AI 튜터와 함께 더 빠르고, 더 깊게 학습하세요.
긴 강의 내용을 AI가 핵심만 요약하여 복습 시간을 단축시킵니다.
강의에서 가장 중요한 키워드와 개념을 자동으로 추출해 제공합니다.
학습한 내용을 바탕으로 AI가 생성한 퀴즈를 풀며 이해도를 점검합니다.
모르는 부분을 24시간 언제든 AI 튜터에게 질문하고 답변을 받습니다.
총 7개 챕터, 49강으로 구성되어 있습니다.
| 제목 | 강의시간 | 상세내용 |
|---|---|---|
| 1장. 자바 시작 | ||
|
[1강] 컴퓨터와 프로그래밍
|
0:
34:
00
|
|
|
자바 시작: 컴퓨터와 프로그래밍 기초 개념 정리
• 프로그래밍 언어와 분류: 컴퓨터에서 실행되는 프로그램을 만드는 도구로, 저급 언어(기계어·어셈블리어)와 고급 언어(C, C++, Java, Python 등), 범용·전용·시스템·응용 언어로 구분 • 프로그래밍 핵심 개념: 기계어·어셈블리어 특성, 고급 언어의 자료구조(데이터 저장 구조)·알고리즘(데이터 처리 절차), 절차지향(C)과 객체지향(Java, C++) 패러다임 차이 정리 • 컴파일과 자바 실행 구조: 소스코드(.java/.c/.cpp)를 컴파일해 기계어·바이트코드(.class, .obj, .exe)로 번역 후 실행하는 과정 및 Java의 웹·네트워크·DB·안드로이드 앱 활용 분야와 C→C++→Java 계보 이해 |
||
|
[2강] 자바의 출현과 WORA, 자바의 진화
|
0:
44:
02
|
|
|
자바 출현 배경과 WORA, JVM과 실행 환경 및 자바 진화 개요
• 자바 출현과 WORA 개념: Sun Microsystems와 James Gosling의 자바 탄생 배경, 플랫폼 종속성 문제 해결을 위한 WORA 철학과 웹·임베디드 지향 언어로서의 위치 정리 • JVM과 실행 구조: 자바 소스(.java) → 바이트 코드(.class) 컴파일, JVM 기반 인터프리트 실행, C/C++의 목적 코드·링크·플랫폼 종속 실행 구조와의 비교, 디어셈블(javap) 활용 개념 • 자바 진화와 배포판: 오픈 소스 전환과 산업적 확산, Java SE·ME·EE 각 배포판의 용도(표준/마이크로/엔터프라이즈)와 대상 플랫폼 및 포함 API 범위 구분 |
||
|
[3강] 자바 개발 환경 구축
|
0:
48:
45
|
|
|
자바 개발 환경 구축과 기본 프로그램 구조 핵심 정리
• JDK·JRE·도구 체계: JDK/JRE 구성과 차이, JDK 설치 디렉터리와 bin(javac, java, jar, jdb, appletviewer) 도구 역할, Java API·클래스 라이브러리 개념 및 문서(javadoc) 생성 방식 정리 • 패키지·IDE 환경: Java 패키지와 계층 구조, 패키지명.클래스명 풀네임과 import 사용, Eclipse IDE를 중심으로 한 통합 개발 환경(편집·컴파일·실행·디버깅·문서화 기능) 이해 • 기본 Java 프로그램 구조와 실행 절차: 클래스와 main 메소드 구조, 변수 선언과 System.out.println 출력, 소스 작성·파일명 규칙·컴파일(javac)·실행(java) 과정 및 JVM·바이트코드 실행 흐름 정리 |
||
|
[4강] 이클립스, 응용프로그램의 종류, 자바의 특징
|
0:
47:
44
|
|
|
자바 이클립스 개발, 응용프로그램 종류, 자바의 특성 정리
• 이클립스 개발 환경 구조: 워크스페이스·프로젝트·클래스 계층과 화면 구성, Java Project/Class 생성 및 main 메소드 기반 실행 절차 정리 • 자바 응용프로그램 유형: 일반 응용, 애플릿, 서블릿·JSP, Java ME, 안드로이드의 실행 위치(클라이언트·서버·모바일), JVM·Dalvik/ART 구조 및 서버 연동 방식 정리 • 자바 언어 및 파일 구조: 객체지향 4대 특성·멀티스레드·플랫폼 독립성, 소스·클래스·내부 클래스·패키지 구조와 public 클래스·파일명 규칙, 실행 모듈(jar)과 main 메소드 역할 정리 |
||
|
[5강] 자바 시작 실습 (1)
|
0:
37:
24
|
|
|
자바 개발 환경 구축과 Eclipse 기본 사용 개요
• 자바 개발 환경 구성 및 JDK/JRE 개념: JDK 설치·구성, JRE 실행 환경, JDK 소스와 Java API 구조 이해를 통한 자바 개발 기반 설정 • Eclipse 및 워크스페이스 구조: Eclipse IDE 다운로드·설정, 워크스페이스·프로젝트·패키지·클래스 계층 구조와 생성 절차, 글꼴·환경 설정 기능 활용 • 자바 프로그램 작성·실행 및 오류 유형: main 메서드 기반 콘솔 출력 프로그램 작성·실행 절차, 문법 오류·논리 오류 구분과 Eclipse 디버그·자동 정렬·빌드 관리 기능 이해 |
||
|
[6강] 자바 시작 실습 (2)
|
0:
35:
56
|
|
|
Summary Content:
• Java 프로그램 기본 구조: 클래스 선언과 예약어·접근 제어자(public, protected, default, private) 정의, main 메서드를 진입점으로 하는 실행 구조, 사용자 정의 클래스와 시스템 제공 클래스(API)의 구분 및 객체지향에서의 재사용·유지 보수 단위로서의 역할 정리 • 입출력과 코드 문법 요소: System.out.print/println의 출력 기능과 줄 바꿈 동작, 문자열·숫자 출력 형식, 주석(comment)의 비실행 설명문 역할과 코드 이해·협업·유지 보수 지원 기능 정리 • 메서드·배열·연산 규칙: main 메서드와 인자(String[] args)의 의미, 배열의 연속 메모리·동일 자료형 저장 구조, 문자열과 숫자 결합 시 + 연산의 좌→우 평가 순서와 괄호를 통한 우선 계산 규칙 정리 |
||
| 2장. 자바 기본 프로그래밍 | ||
|
[7강] 자바 프로그램의 구조, 식별자
|
0:
41:
53
|
|
|
자바 프로그램 구조와 식별자 작성 원칙 요약
• 자바 프로그램 구조와 메소드 개념: 클래스·main 메소드·블록·문장·주석 구조, 메소드의 반환형·매개변수·호출·반환값과 지역변수·전역변수의 범위 및 표준 출력 스트림(System.out) 사용 방식 정리 • 식별자와 키워드 규칙: 식별자 정의, 사용 가능/불가 문자, 키워드·리터럴(true, false, null) 사용 금지, 숫자로 시작 불가, 대소문자 구분, 올바른/잘못된 식별자 사례를 통한 작성 원칙 정리 • 명명 규칙과 상수: 클래스/변수/메소드의 PascalCase·camelCase·헝가리안 표기법, final을 이용한 상수 선언, 대문자+언더바 상수 이름 규칙 및 변경 불가 특성 정리 |
||
|
[8강] 자바의 데이터 타입
|
0:
43:
25
|
|
|
자바 기본·레퍼런스 타입과 변수·리터럴·형변환 정리
• 자바 데이터 타입 체계: 기본 타입 8개(boolean, char, byte, short, int, long, float, double)와 레퍼런스 타입(String·배열·클래스·인터페이스)의 크기·표현 범위·메모리 저장 방식 구분 • 변수·상수·리터럴: 변수 선언·초기화·대입 규칙, 상수(final)의 정의와 네이밍 규칙, 정수·실수·문자·논리·문자열·null 리터럴의 표기법·기본 타입(int, double)·사용 제한(boolean↔정수 변환 금지) 정리 • 형변환 규칙: 자동 타입 변환(표현 범위 확장·연산 시 승격 규칙)과 강제 타입 변환(캐스팅 문법, 범위 축소·소수 절삭·오버플로우 위험, 캐스팅 위치에 따른 연산 결과 차이) 정리 |
||
|
[9강] 자바에서 키 입력 (1)
|
0:
52:
50
|
|
|
자바 키 입력과 System.in, InputStreamReader 개념 정리
• 표준 입출력 스트림과 키보드 입력: System.out/화면 출력, System.in/키보드 연결 표준 입력 스트림, 스트림 기반 I/O 구조 및 바이트 단위 입력 특성 정리 • InputStreamReader와 키 입력 처리 흐름: System.in 바이트 스트림을 문자 스트림으로 변환하는 브리지 스트림 역할, 객체 생성 문장 구조와 rd.read()에 의한 키보드 문자 입력 절차 정리 • 예외 처리와 기본 실행 구조: 키보드·파일·네트워크 I/O 과정의 IOException 개념, try-catch 예외 처리 패턴, import java.io.*와 public static void main(String[] args)의 의미 및 실행 진입 구조 정리 |
||
|
[10강] 자바에서 키 입력 (2)
|
0:
36:
44
|
|
|
자바 Scanner 클래스를 이용한 키보드 입력 정리
• 자바 키보드 입력 방식 비교: InputStreamReader와 Scanner의 구조·역할 차이 및 Scanner의 고수준 입력 처리 장점(토큰 분리+형 변환) 정리 • Scanner 핵심 기능: java.util.Scanner import 구조, System.in 기반 객체 생성, 공백 단위 토큰 분리 원리, next·nextInt·nextDouble·nextLine 등 자료형별 입력 메소드와 next vs nextLine 동작 차이 정리 • Scanner 활용 및 주의점: 이름·나이·체중·신장 등 다중 입력 처리 패턴, 의미 있는 변수명 사용, 정수·실수·문자열·문장 입력 시 메소드 선택 기준과 버퍼에 남은 개행 문자 처리 유의사항 정리 |
||
|
[11강] 연산자 (1)
|
0:
44:
00
|
|
|
자바 연산자 개념 정리와 비트·시프트 연산 핵심 요약
• 자바 기본 연산자 체계: 증감·산술·나머지·대입·축약 대입·연산자 우선순위와 결합 방향을 통한 수식 평가 구조 정리 • 논리·삼항 연산자: boolean 연산 규칙, 조건식 기반 분기 및 대입 표현 방식 정리 • 비트·시프트 연산자: AND·OR·XOR·NOT 및 좌우 시프트를 이용한 비트 단위 계산, 2의 거듭제곱 배/나눗셈 효과와 정수 타입 변환 규칙 정리 |
||
|
[12강] 연산자 (2)
|
0:
29:
18
|
|
|
JAVA 연산자 심화: 비교·논리·대입·증감·삼항 연산 정리
• 비교·논리 연산자: <, >, =, ==, !=, !, ^, ||, &&를 사용한 boolean 결과 계산, 진리표 기반 논리식 평가 및 문자/정수 비교 구조 이해 • 대입·복합 대입 연산자: = 및 +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=를 통한 값 갱신과 축약 표현, 비트/산술 연산 결합 구조 정리 • 증감·삼항 연산자: 전위/후위 증감(++x, x++, --x, x--)의 평가 순서와 값 변화 추적, 조건식 ? 참값 : 거짓값 구조와 if-else 상호 변환 원리 이해 |
||
|
[13강] 조건문
|
1:
03:
44
|
|
|
자바 조건문 if, switch, 조건연산자 핵심 정리
• if문 계열 구조: 단순 if, if-else, 중첩 if(else if 포함)를 통해 boolean 조건식 기반 분기, 블록 범위, 다중 조건 단일 선택 구조 정리 • 조건 연산자(삼항 연산자): (조건식) ? 값1 : 값2 형태로 if-else를 단일 식으로 축약, 평가 순서와 대입 연산자 우선순위 개념 정리 • switch문 구조: switch- case-break-default 구문, 허용 타입(int·char·String 등), fall-through 동작, if문 대비 사용 기준 및 변환 절차 정리 |
||
|
[14강] 자바 기본 프로그래밍 실습 (1)
|
0:
30:
25
|
|
|
Java 메서드 구조와 기본 자료형·상수 실습 정리
• Java 프로그램 구조와 main 메서드: 클래스와 메서드 블록 구조, JVM의 main 메서드 진입, 메서드 호출·인수 전달·return에 따른 실행 흐름 이해 • Java 기본 문법 요소: 세미콜론 기반 문장 구분, 주석(Comment) 유형과 작성 원칙, 8가지 기본 자료형과 변수 선언·초기화, String 클래스와 문자열·null 처리 • 상수(final) 개념: final 키워드에 의한 값 변경 불가 규칙, 재대입 시 컴파일 오류 의미, 불변 값 정의 용도 중심 활용 원리 |
||
|
[15강] 자바 기본 프로그래밍 실습 (2)
|
0:
32:
37
|
|
|
자바 자료형 형변환과 InputStreamReader를 이용한 키보드 입력 처리 핵심 정리
• 자바 형변환 개념: 기본 자료형 크기 체계와 자동형 변환(작은→큰, 데이터 손실 없음)·명시적 형변환(큰→작은, 형변환 연산자 필요·데이터 손실 가능) 구조 정리 • 키보드 입력 처리 구조: InputStreamReader와 System.in, read 메소드의 정수(문자 코드) 반환 방식, ASCII/유니코드 값과 char 형변환을 통한 문자 입출력 매핑 정리 • 반복 입력·예외 처리: while(true) 기반 반복 입력 구조, rd.read()의 IOException에 대한 try-catch 예외 처리, -1·특정 문자(q 등) 비교와 break를 활용한 무한 루프 종료 조건 설계 |
||
|
[16강] 자바 기본 프로그래밍 실습 (3)
|
0:
47:
58
|
|
|
자바 Scanner 클래스 기초 사용 및 입력 처리 연습
• Scanner 클래스와 API 문서: java.util.Scanner 엔티티 정의, 생성자·메서드 요약 확인을 통한 키보드·파일 입력 처리 구조 이해 • Java 프로그램 구조와 메서드 개념: 클래스와 public static void main 구조, 메서드·반환형·void 의미 및 return 타입 일치 규칙 정리 • Scanner 입출력 활용: import와 new Scanner(System.in)로 입력 스트림 연결, nextInt·nextDouble 사용과 System.out.print/println 차이를 통한 콘솔 입출력 패턴 구성 |
||
|
[17강] 연산자 실습
|
0:
58:
18
|
|
|
자바 연산자 실습: 산술·비트·논리·증감·3항 연산 핵심 정리
• 산술·형변환·조건 연산자: 정수/실수 나눗셈, %, 명시적/묵시적 형변환, 3항(조건) 연산자 구조와 boolean 기반 분기 처리 • 비트·시프트 연산자: 16진수·2진수 표현, AND/OR/XOR/NOT 비트 연산, <<, >> 를 이용한 2의 거듭제곱 배·제수 연산 및 마스킹 • 비교·논리·증감 연산자: 비교 연산과 boolean 논리(&&, ||, ^) 규칙, 전위/후위 증감(++/--) 평가 시점 차이와 표현식 내 사용 원리 |
||
|
[18강] 조건문 실습
|
0:
44:
40
|
|
|
Summary Content:
Java 조건문과 switch문 핵심 정리 및 성적 처리 예제 • Java 조건문 기본 구조: if / if–else / else if를 이용한 범위·논리 기반 분기, Scanner 입력(nextInt, hasNext)과 while 반복을 결합한 합격/불합격·학점 판정 및 배수 판정 처리 • switch–case 구조와 제약: switch(식)–case–break–default를 이용한 값 일치 기반 다중 분기, score/10을 활용한 점수 구간화 학점 처리, 문자(char)·문자열(String) case 사용 가능, case에는 상수·컴파일 시 결정 값만 허용되고 범위·조건식 사용 불가 • if문 vs switch문 선택 기준: 경우의 수가 적거나 범위·복합 조건이 필요할 때 if–else 체인 사용, 경우의 수가 많고 단순 값 비교일 때 switch–case 사용, break 누락 시 fall-through 발생과 default를 통한 나머지 경우 처리 구조 이해 |
||
|
[19강] 자바 기본 프로그래밍 실습 (4)
|
0:
36:
20
|
|
|
Java 반복문 for문·while문 실습과 변수 스코프 및 형 변환
• Java 반복문 구조: for문과 while문의 초기식·조건식·증감식·실행 순서 및 다중 변수 제어를 통한 누적합·수식 출력·입력 반복 처리 절차 정리 • 변수 스코프와 누적합 알고리즘: 지역 변수와 전역 변수의 유효 범위, 초기화 규칙, 1부터 N까지 합을 구하는 반복 방식과 수식 방식의 연산 횟수·알고리즘 효율 비교 • 정수/실수 연산과 무한 루프 제어: 정수·실수 연산 및 자동/강제 형 변환을 이용한 평균 계산 정확도 확보, while(true) 무한 루프와 break를 이용한 입력 종료·반복 탈출 제어 구조 분석 |
||
|
[20강] 자바 기본 프로그래밍 실습 (5)
|
0:
32:
19
|
|
|
Summary Content:
Java 반복문 do-while, 중첩 for, break/continue, 라벨 분기 정리 • 반복문 구조와 차이: while·do-while·for의 조건 검사 시점과 최소 1회 실행 여부, 중첩 for문을 이용한 구구단 출력 구조(j: 단, i: 곱해지는 수) 정리 • 제어문 기능: continue를 통한 현재 반복 일부 건너뛰기, break를 통한 가장 안쪽 반복 종료, while(true)+break 패턴을 통한 미정 반복 횟수와 센티널(-1) 종료 처리 • 라벨 분기 제어: 라벨(label)을 이용한 다중 중첩 반복에서 break·continue 대상 반복문 지정 방식과 바깥 반복 직접 종료·건너뛰기 구조 정리 |
||
|
[21강] 자바 기본 프로그래밍 실습 (6)
|
0:
35:
11
|
|
|
배열 선언과 최대·최소·평균, for-each문 핵심 정리
• Java 배열 기본 개념: 동일 타입 데이터를 연속 메모리에 인덱스로 저장·관리하는 구조로, 선언(int[] a)·생성(new int[n]) 분리와 length 기반 인덱스 범위(0 ~ length-1) 및 예외(ArrayIndexOutOfBoundsException) 처리 • 배열 활용 알고리즘: Scanner 입력과 반복문을 결합해 최대값·최소값·평균을 계산하며, max/min 초기값 전략(극단값·첫 원소), length를 이용한 반복·나눗셈으로 하드코딩 상수 제거 및 유지보수성 향상 • for-each 및 확장 활용: for-each문(for(타입 v : 배열/Week.values()))으로 인덱스 없이 순차 순회하여 코드 단순화하고, 정수·문자열 배열 및 enum 열거형 상수 집합 처리에 사용하되 인덱스가 필요한 경우 일반 for문 사용 |
||
|
[22강] 자바 기본 프로그래밍 실습 (7)
|
0:
53:
49
|
|
|
포이치문, 2차원·비정방형 배열, 예외처리 핵심 정리
• 향상된 for문·열거형(enum)·배열 순회: enum과 1차원 배열을 향상된 for문으로 읽기 전용 순회하는 문법과 기존 for문(인덱스 기반)과의 차이·용도 비교 • 2차원·비정방형 배열 구조: 2차원 배열의 선언·생성·초기화, length 사용(arr.length, arr[i].length), 지그재그(리얼자) 패턴, 정방형 배열과 Jagged Array(행별 가변 길이) 선언·활용 및 메소드에서 배열 반환 패턴 • 자바 예외 처리 기초: 예외 개념과 try-catch 흐름, ArithmeticException(0으로 나누기), ArrayIndexOutOfBoundsException(배열 범위 초과), NumberFormatException(형식 불일치) 발생 조건과 처리 방식 |
||
| 3장. 반복문과 배열 그리고 예외 처리 | ||
|
[23강] 반복문
|
0:
51:
42
|
|
|
자바 반복문 기본 구조와 for/while/do-while 정리
• 자바 반복문 기본 개념: for문·while문·do-while문 세 가지 반복 제어 구조의 역할, 공통점(조건 기반 반복)과 차이점(조건 평가 시점·초기화·증감 위치) 정리 • 반복문 구조와 실행 흐름: for문(초기문-조건식-작업문-반복후작업), while문(선조건-반복), do-while문(후조건-최소 1회 실행), 무한 반복 조건, 지역 변수 범위와 입력 기반 반복(Scanner 활용) 구조 정리 • 중첩 반복문과 응용: 2중 for문을 통한 총 반복 횟수 계산, 구구단 출력 등 2차원 데이터 처리 패턴 정리 |
||
|
[24강] continue문과 break문
|
0:
25:
55
|
|
|
JAVA 반복 제어: continue문과 break문, 라벨 활용 정리
• 반복 제어문 개념: 반복문 내부 흐름을 부분 건너뛰기 또는 조기 종료하기 위한 continue문·break문 기본 원리와 for·while·무한 반복에서의 제어 구조 정리 • continue문·break문 동작: continue를 통한 현재 반복 하단 코드 스킵 및 다음 반복 분기, break를 통한 현재(가장 안쪽) 반복문 즉시 종료와 입력 루프·조건 제어 패턴 요약 • 라벨과 중첩 반복 제어: 중첩 반복문에서 기본 break 한계, 라벨이 있는 continue·break 문법과 동작(바깥 반복 다음 반복 이동·전체 탈출)을 활용한 다단계 반복 제어 구조 정리 |
||
|
[25강] 배열
|
0:
45:
43
|
|
|
자바 배열 선언과 인덱스 및 for-each 문 핵심 정리
• 자바 배열 기본 개념과 메모리 구조: 동일 타입 데이터의 연속적 저장, 0~length-1 인덱스 기반 접근, 선언·생성(new)·초기화 절차 및 정적 크기와 length 필드 특성 정리 • 배열 접근과 참조 규칙: 인덱스 범위 위반에 따른 ArrayIndexOutOfBoundsException, 배열 생성 전 접근 오류, 다수 레퍼런스의 동일 배열 공유와 값 변경 영향 구조 정리 • 배열과 반복문 활용: for문·for-each문을 이용한 원소 순회, 합계·평균·최대값 계산 등 배열 기반 알고리즘 작성 패턴 및 열거형(enum) 순회 방식 정리 |
||
|
[26강] 다차원 배열, 자바의 예외 처리
|
0:
31:
13
|
|
|
다차원 배열과 예외 처리 핵심 개념 정리
• 2차원 배열과 비정방형 배열: 행·열 구조의 2차원 배열 선언·생성·초기화와 length 활용, 정방형/비정방형(jagged) 배열 비교 및 메모리 효율성 구조 정리 • 배열 순회와 메소드 반환: 2차원 배열의 중첩 for문 순회 패턴, 행·열 크기 동적 참조, 메소드에서 배열 참조 반환과 배열 타입 일치 규칙 정리 • 자바 예외와 예외 처리: 예외 개념과 주요 예외 타입(ArithmeticException, ArrayIndexOutOfBoundsException, NumberFormatException 등), try-catch-finally 구조와 실행 중 오류 대응 방식 정리 |
||
| 4장. 클래스와 객체 | ||
|
[27강] 객체 지향과 자바 실습 (1)
|
0:
44:
43
|
|
|
Java 클래스와 객체, 생성자, 접근제어자 핵심 정리
• 클래스와 객체, 멤버 구성: 클래스는 멤버 변수(속성)와 메서드(동작)를 포함한 설계도이며, 객체는 new 연산을 통해 힙에 생성되고 스택의 참조 변수로 접근함 • 접근제어자·정보은닉·static: default·private·protected·public으로 접근 범위를 제어하여 정보은닉·캡슐화를 구현하고, static 요소는 객체 없이 클래스 단위로 사용되며 non-static 멤버는 반드시 객체 생성 후 참조 변수로 접근함 • 메서드·생성자·this 오버로딩: 메서드는 반환 타입(void 포함)을 가지는 동작 단위이며, 생성자는 클래스명과 동일하고 객체 생성 시 자동 호출·오버로딩되며, this 키워드로 현재 객체 멤버를 명시해 매개변수와 구분하여 초기화·Goods/Person 설계에 활용함 |
||
|
[28강] 객체 지향과 자바 실습 (2)
|
0:
26:
54
|
|
|
클래스 메서드 설계와 객체배열 구현 핵심 정리
• 클래스 설계와 메서드 구조: MyExp 클래스의 멤버변수(Base, exp)와 int getValue() 메서드를 통해 지수 계산 기능을 구현하고, 반복문과 반환형을 결합한 기능 단위 클래스 설계 원리 정리 • 캡슐화와 접근 메서드 패턴: Goods/Goods2 클래스의 private 필드, this를 사용하는 생성자, get/set 명명 규칙(CamelCase)을 통한 캡슐화 구조 및 IDE 기반 getter/setter 자동 생성 활용 방식 정리 • 객체배열과 입력·출력 흐름: Goods2[] 배열 레퍼런스 선언 → new Goods2[크기] 배열 생성 → 각 인덱스별 new Goods2(...) 객체 생성의 3단계 구조와 Scanner 입력, for문 순회, getter 사용 출력 절차를 통합한 객체배열 처리 흐름 정리 |
||
|
[29강] 메소드 형식 실습 (1)
|
0:
49:
54
|
|
|
Summary Content:
Java 메서드 형식과 접근 제한자, 객체 생성 개념 정리 • 클래스 구조와 메서드 개념: 클래스는 변수(필드)와 메서드(동작)로 구성된 추상화 단위이며, 메서드는 수학적 함수처럼 입력(파라미터)을 받아 처리 후 결과를 반환하거나(void인 경우 반환 없이 수행) 동작을 수행하는 기능 단위 • 메서드 형식과 리턴타입: 메서드 선언은 `[접근 제한자] [리턴타입] 메서드이름(매개변수)` 형식으로 작성되며, `void`는 반환값 없음, 비 void 메서드는 `return`으로 호출 지점에 값을 돌려주고 이 값의 타입은 선언된 리턴타입과 일치해야 함 • 접근 제한자와 객체 생성: public·protected·default·private는 멤버의 접근 범위(클래스 내부, 동일 패키지, 상속 관계, 외부 전체)를 결정하여 캡슐화를 구현하며, 인스턴스 메서드는 클래스로부터 `new`로 객체를 생성한 뒤 `객체참조.메서드()` 형태로 호출해야 실제 메모리 상에서 동작함 |
||
|
[30강] 메소드 형식 실습 (2)
|
0:
42:
24
|
|
|
자바 메서드 매개변수 전달, 생성자와 참조 타입 동작 정리
• 생성자 메서드와 기본 생성자: 클래스 이름과 동일하며 반환형이 없는 생성자 정의, 객체 생성 시 자동 호출, 오버로딩 가능하며 사용자가 생성자를 정의하면 매개변수 없는 기본 생성자는 자동 생성되지 않으므로 필요 시 명시적으로 작성 • 매개변수 전달 방식과 참조 구조: 기본 타입은 값 자체가 복사되는 pass-by-value로 메서드 내부 변경이 호출자에 영향을 주지 않으며, 객체와 배열은 힙에 생성된 동일 객체의 참조값(주소)을 복사해 전달하여 필드·요소 변경이 호출자에게 그대로 반영됨 • 캡슐화와 접근 제어: 중요한 필드는 private으로 은닉하고 public getter/setter 메서드를 통해서만 접근·변경하도록 설계하여 비밀번호 검증 등 검증 로직을 포함한 안전한 상태 관리와 데이터 무결성·정보 은닉을 구현함 |
||
|
[31강] 메소드 활용 실습
|
0:
49:
26
|
|
|
메서드 오버로딩과 this 레퍼런스 핵심 정리
• 메서드 오버로딩: 동일 메서드 이름에 대해 매개변수 타입·개수로 시그니처를 구분하여 다형성을 제공하고, println처럼 하나의 이름으로 다양한 타입 처리를 가능하게 하는 기법 • 형 변환 규칙: 오버로딩 선택 시 표현 범위가 넓은 타입으로는 자동 형 변환이 적용되나(예: int → float), 범위 축소 시에는 데이터 손실 가능성으로 인해 강제 형 변환(casting)만 허용됨 • this 레퍼런스: 현재 실행 중인 메서드가 속한 객체 자신을 가리키는 참조로, 멤버 변수와 지역 변수 이름 충돌 시 this.멤버변수 형태로 구분하며, 생성자·setter/getter에서 객체 상태 설정·조회에 사용됨 |
||
|
[32강] 생성자(constructor) 실습
|
0:
45:
12
|
|
|
Java 생성자 개념과 상속 구조 핵심 정리
• Java 생성자 기본 개념: 클래스 이름과 동일·반환형 없음·new 시 자동 호출되는 특수 메서드로, 힙 영역 객체 생성 직후 멤버 변수 초기화를 수행함 • 상속과 생성자 호출 구조: 모든 클래스는 Object를 최상위로 하는 상속 트리를 가지며, super()를 통해 Object까지 부모 생성자가 먼저 호출된 후 자식 생성자가 실행됨 • 생성자 설계 패턴: 기본 생성자 자동 생성 규칙과 오버로딩, this()/super() 호출 제약을 활용해 공통 초기화 코드를 위임하고 매개변수 조합별로 일관된 객체 초기화 구조를 설계함 |
||
|
[33강] 가비지와 가비지 컬렉션 실습
|
0:
40:
09
|
|
|
Java 가비지 컬렉션과 접근 지정자 핵심 정리
• 가비지 컬렉션과 객체 수명: 힙 영역에 new로 생성된 객체 중 참조 변수가 사라져 더 이상 참조되지 않는 객체(가비지)를 자동 탐지·회수하여 메모리 누수 방지 및 수동 해제(malloc/free) 대비 안정적 메모리 관리 수행, System.gc()로 수집 시도 요청 가능 • 접근 지정자와 패키지 범위: 클래스와 멤버에 public·private·default를 적용하여 접근 범위를 제어하며, public은 모든 패키지에서 접근 가능, default는 동일 패키지 내에서만 접근 가능, private은 선언된 클래스 내부에서만 접근 가능한 구조 제공 • 캡슐화와 정보 은닉: 민감 데이터를 private 필드로 숨기고 public 메서드(setter, 검증 로직 포함)를 통해서만 간접 접근을 허용함으로써 임의 수정 방지·검증 절차 강제·객체 상태 무결성 유지라는 객체지향 설계 원칙 구현 |
||
|
[34강] static 멤버 실습
|
0:
27:
14
|
|
|
Java static과 final 키워드 핵심 개념 정리
• static 키워드: 클래스 로딩 시 메모리에 생성되는 공유 멤버로, 객체 생성 없이 클래스 이름으로 접근하며 클래스당 단 하나의 변수·메소드·객체 공간을 여러 인스턴스가 공동 사용 • non-static vs static 멤버: non-static 멤버는 각 객체마다 독립 메모리(개별 상태)를 가지며 객체를 통해서만 접근하고, static 멤버는 공용 상태·기능 관리 및 환율 변환기(CurrencyConverter.rate, toDollar, toKWR 등) 같은 전역 수준 기능 구현에 사용 • final 키워드: final 클래스는 상속 불가, final 메소드는 오버라이딩 불가, final 변수는 1회만 대입 가능한 상수로, static과 결합한 `public static final` 패턴은 프로그램 전역에서 공유되는 불변 상수 정의에 사용 |
||
| 5장. 상속 | ||
|
[35강] 상속의 개념 실습
|
0:
52:
42
|
|
|
객체지향 자바 상속과 메서드 오버라이딩 핵심 정리
• 자바 상속 개념과 구조: 부모(슈퍼) 클래스의 공통 속성과 메서드를 자식(서브) 클래스가 extends로 재사용하여 계층 구조와 코드 재사용성·안정성을 확보하는 메커니즘 • 상속 설계 원칙과 일반화·구체화: Animal–Person–Snake–Lizard, Object–Point–ColorPoint 예제를 통해 공통 특성은 상위 클래스, 개별 특성은 하위 클래스에 두고, 상위는 일반화된 동작만 두며 구체 동작은 각 하위에서 정의하는 설계 원리 • 메서드 오버라이딩과 오버로딩: 상속 관계에서 같은 시그니처로 부모 메서드를 재정의해 다형성을 구현하는 오버라이딩과, 동일 이름에 매개변수 목록만 달리하는 오버로딩을 구분하고, 잘못된 상속 사례를 통해 의미론적으로 타당한 계층 설계 기준을 학습하는 내용 |
||
|
[36강] 클래스 상속과 개체, 상속과 접근 지정자 실습
|
0:
37:
32
|
|
|
자바 접근 지정자와 상속 시 멤버 접근 정리
• 자바 접근 지정자: public·private·default·protected의 정의와 동일 클래스/패키지/상속/타 패키지에 따른 접근 범위 및 우선순위 구조 정리 • 캡슐화와 간접 접근: private 필드와 public setter/getter 메소드를 통한 정보 은닉, 상속 관계(A10/B10)에서의 멤버 보유·접근 구조 정리 • 패키지와 상속 관계: myPackage/yourPackage 간 import, 같은 패키지 vs 다른 패키지, 상속 여부에 따른 public·default·protected 멤버 접근 가능성 정리 |
||
|
[37강] 상속과 생성자, 객체의 타입 변환 실습
|
0:
58:
51
|
|
|
자바 상속 관계에서 생성자 호출과 객체 타입 변환 정리
• 생성자와 super 호출 구조: 상속 관계에서 객체 생성 시 Object → 부모 → 자식 순으로 생성자가 호출되며, 자식 생성자 첫 줄의 숨겨진 super() 또는 명시 super(인자)로 부모 생성자를 선택하고, 부모에 기본 생성자가 없으면 생성자 짝 불일치로 컴파일 오류가 발생함 • 업캐스팅과 멤버 접근: 자식 객체를 부모 타입 참조 변수에 대입하는 자동 형변환으로, 부모 타입이 실제로 자식 인스턴스를 가리켜도 정적 타입 기준으로 부모가 정의한 멤버까지만 접근 가능하며, 자식이 추가한 필드는 직접 접근 불가함 • 다운캐스팅과 접근 확장: 부모 타입 참조를 자식 타입으로 명시적으로 형변환하여 상속받은 멤버와 자식 고유 멤버 모두 접근 가능하게 하지만, 실제 객체가 자식 타입이 아닐 경우 런타임 ClassCastException 위험이 있어 instanceof로 타입 검사가 필요함 |
||
|
[38강] 메소드 오버라이딩 실습
|
0:
47:
57
|
|
|
Java instanceOf 연산자와 메서드 오버라이딩 핵심 정리
• instanceof 연산자와 상속 관계: 업캐스팅된 참조 변수가 가리키는 실제 객체 타입을 검사해 부모·자식·인터페이스 타입 여부를 true/false로 판별하는 연산자 개념과 사용 규칙 정리 • 메서드 오버라이딩과 동적 바인딩: 부모 메서드를 자식이 동일 시그니처로 재정의하여 다형성을 구현하고, 부모 타입 참조로 호출해도 실제 객체 타입의 오버라이딩 메서드가 실행되도록 하는 동적 바인딩 원리 정리 • 변수 종류와 메모리 구조: 인스턴스 변수·지역 변수·객체 참조 변수의 정의, 힙/스택 메모리 위치와 객체 수명, 기본형과 참조형 변수의 저장 방식 및 가비지 컬렉션 대상 조건 정리 |
||
|
[39강] 추상 클래스, 인터페이스 실습
|
0:
51:
55
|
|
|
추상 클래스와 인터페이스 핵심 개념 및 활용 정리
• 추상 클래스와 추상 메소드: abstract 예약어로 선언되는 미구현 메소드와 이를 포함해 일반 메소드·필드를 함께 가질 수 있는 상위 설계 단위, 객체 직접 생성 불가 및 상속 후 오버라이딩을 통한 구현 구조 정리 • 인터페이스와 다중 구현: 상수와 추상 메소드로만 구성되는 타입으로 public static final·public abstract 자동 부여, 객체 생성 불가하지만 implements로 여러 인터페이스를 동시에 구현하여 클래스 다중상속을 대체하는 규격 제공 장치 • 추상 클래스 vs 인터페이스 활용 기준: 공통 상태·기본 동작 일부 제공 시 추상 클래스 사용, 구현 없이 메소드 시그니처 규격만 강제하고 다중 구현 효과가 필요할 때 인터페이스 사용하도록 비교 정리 |
||
| 6장. 클래스 | ||
|
[40강] Object 클래스 실습
|
0:
35:
35
|
|
|
Java Object 클래스와 주요 메소드 활용 정리
• Object 클래스 상속 구조: java.lang 패키지 최상위 슈퍼 클래스, 모든 사용자 정의 클래스의 공통 부모로 clone, equals, getClass, hashCode, toString 등 기본 메소드 상속 제공 • 객체 식별·정보 메소드: getClass와 getName을 통한 런타임 클래스 정보 조회, hashCode를 통한 객체 식별용 정수값 제공, 기본 toString의 클래스이름@해시코드(16진수) 형식과 오버라이딩을 통한 사용자 정의 문자열 표현 • 객체 비교 메커니즘: == 연산자의 참조(주소) 동일성 비교, 기본 equals의 참조 기반 비교, equals 오버라이딩을 통한 필드 값 기반 동등성 비교 및 clone을 이용한 동일 상태 객체 복제 기능 제공 |
||
|
[41강] Wrapper 클래스 실습
|
0:
33:
13
|
|
|
자바 래퍼 클래스 기본 개념과 활용 정리
• 자바 래퍼 클래스 개념 및 필요성: 기본 자료형을 객체로 포장해 컬렉션·API에서 사용 가능하게 하며, 스택/힙 메모리 구조와 기본형-Wrapper 타입 대응 관계 정리 • 자동 형 변환 및 형변환 메서드: 오토박싱·언박싱을 통한 기본형↔Wrapper 자동 변환과 parseXXX, toString을 활용한 문자열↔기본형 변환 절차 정리 • 문자·문자열 처리와 Character 메서드: char와 String 구조 및 널 문자 개념, Character.toLowerCase/toUpperCase 등 단일 문자 변환 기능 정리 |
||
|
[42강] String 클래스 실습
|
0:
38:
23
|
|
|
자바 래퍼·박싱 개념과 String 클래스 핵심 메서드 정리
• 래퍼 클래스와 오토 박싱/언박싱: 기본 자료형을 객체(Integer 등)로 포장·해제하여 JDK 5 이후 자동 형 변환 및 컬렉션 활용 기반 제공 • String 자료형과 불변성: 참조 자료형이자 불변 객체로 리터럴·new·char[] 기반 생성 방식을 가지며 concat·trim·replace 호출 시 항상 새 String 객체 반환 • 문자열 비교·전처리 메서드: equals/equalsIgnoreCase/compareTo로 내용·대소문자·사전식 크기 비교를 수행하고 trim·replace·split으로 양끝 공백 제거, 부분 문자열 치환, 구분자 기준 분리 및 String 배열 처리 수행 |
||
|
[43강] StringBuffer, StringTokenizer, Math 클래스 실습
|
0:
42:
50
|
|
|
스트링 버퍼와 토크나이저, Math 클래스 핵심 정리
• StringBuffer 클래스와 String 차이, 주요 메소드: 불변 String vs 가변 StringBuffer 구조, append/insert/replace/delete/reverse/length/charAt를 통한 효율적 문자열 수정 및 조회 기능 정리 • StringTokenizer 클래스와 토큰 처리: 구분자 기반 토큰 분리 개념, hasMoreTokens·nextToken 메소드를 이용한 while 반복 구조와 순차적 토큰 소비 방식 정리 • Math 클래스와 static 메소드, 난수 생성: java.lang 소속 static 유틸리티 클래스 특성, abs/ceil/floor/sqrt/rint/random/round 메소드 동작과 정수 범위 난수 생성·로또 번호 생성 로직(범위 스케일링·정수화·중복 제거 알고리즘) 정리 |
||
|
[44강] Calendar 클래스 실습
|
0:
26:
08
|
|
|
자바 Calendar 클래스 기본 개념 및 활용 정리
• Calendar 클래스 개념과 위치: java.util 패키지의 날짜·시간 관리용 추상 클래스, static 필드 상수 기반 시간 단위(YEAR, MONTH, DATE, HOUR_OF_DAY 등) 제공 • Calendar 객체 생성·조회·설정: Calendar.getInstance()로 객체 생성, get(int field)로 필드값 조회, clear()·set(year, month, date)로 날짜·시간 재설정 • 시간·달력 필드 활용: MONTH·DAY_OF_WEEK 인덱스 규칙(월 0부터, 요일 SUNDAY=1)과 WEEK_OF_YEAR·AM_PM·MINUTE·SECOND·MILLISECOND 등을 이용한 주차·요일·시·분·초·밀리초 단위 시간 처리 및 분기 로직 구현 |
||
| 7장. 제네릭과 컬렉션 | ||
|
[45강] 컬렉션과 제네릭 실습
|
0:
57:
30
|
|
|
자바 컬렉션과 Vector, 제네릭 기본 구조 정리
• 자바 컬렉션 프레임워크: 배열의 정적 메모리 한계를 보완하는 동적 자료구조 인터페이스 집합으로, Collection(List·Set·Queue)과 Map 계열의 계층 구조를 통해 다수 객체를 유연하게 저장·관리 • Vector 클래스: List 인터페이스 구현 동적 배열 컬렉션으로, add·addAll·capacity·contains·elementAt·indexOf·remove·set·size 등의 메서드로 순서 유지, 자동 용량 확장, 요소 조회·수정·삭제 기능 제공 • 제네릭과 사용자 정의 객체 저장: Vector |
||
|
[46강] 제네릭 컬렉션 활용 실습 (1)
|
0:
52:
47
|
|
|
Summary Content:
자바 ArrayList와 Vector 비교, 리스트 활용 예제 정리 • 자바 컬렉션 및 ArrayList 개념: 배열 대비 동적 메모리·가변 길이 저장 구조, List 인터페이스 구현체로 객체·제네릭 기반 순서 보장 리스트 제공 • Vector·스레드·동기화 개념: 프로세스·스레드 실행 단위와 공유 자원 동기화 원리 이해, Vector의 내장 synchronized 처리와 ArrayList의 비동기화·성능 중심 설계 비교 • ArrayList 활용 및 주요 메서드: add/get/size/contains/indexOf/remove/clear 등 리스트 조작 API와 초기 용량·자동 확장 구조를 사용해 문자열 최장 길이 탐색 알고리즘 구현 |
||
|
[47강] 제네릭 컬렉션 활용 실습 (2)
|
0:
23:
04
|
|
|
Java 컬렉션과 Iterator 인터페이스 핵심 정리
• Java 컬렉션 구조(List, Set, Map) : 리스트(순서 유지·중복 허용), 세트(순서 없음·중복 불가), 맵(Key-Value·Key 중복 불가) 특징 및 데이터 저장·검색 방식 비교 • Iterator 인터페이스 : 컬렉션 구조와 무관하게 순차적 데이터 검색을 표준화하는 인터페이스로 hasNext(), next() 패턴, 제네릭을 통한 타입 안정성, NoSuchElementException 발생 조건 정리 • Vector와 Iterator 활용 및 리팩토링 : Vector 컬렉션을 Iterator로 순차 순회하며 합계 계산하는 절차와 반복문 내 변수 선언 위치 최적화 등 코드 리팩토링 원칙 정리 |
||
|
[48강] 제네릭 만들기 실습
|
0:
51:
33
|
|
|
자바 HashMap과 제네릭, 응용 예제 정리
• HashMap 핵심 개념·메소드: 키–값 쌍 구조, 유일 키와 덮어쓰기 특성, put/get/remove/size/isEmpty/keySet 등 기본 연산과 내부 검색·저장 동작 이해 • 제네릭 기반 타입 설계: HashMap • HashMap 응용 패턴: keySet·Iterator를 이용한 전체 순회 구조와 영어 단어 사전, 성적 관리, 학생 정보 관리 예제를 통해 실전 데이터 매핑·조회·관리 로직 구현 패턴 학습 |
||
|
[49강] 리스트와 제네릭 실습
|
0:
44:
49
|
|
|
자바 LinkedList, Collections 클래스와 제네릭(Generic) 스택 구현 정리
• LinkedList 및 Collections 유틸리티 클래스: LinkedList 구조·주요 메소드(get, getFirst, getLast 등)와 Collections의 정렬(sort), 역정렬(reverse), 이진검색 지원 기능을 통한 컬렉션 조작 방법 정리 • 이진검색(Binary Search) 알고리즘: 정렬 선행 조건, low/high/mid 인덱스 기반의 구간 절반 축소 절차와 순차검색 대비 시간복잡도 O(log n) 특성 정리 • 제네릭(Generic)과 제네릭 스택(GStack |
||
박길식 교수님
JAVA 프로그래밍Ⅰ