스터디 진행 방법(고민중)

방법별

  • 강의형

    • (장점) : 심도있는 조사 가능, 가르치며 배우는 부분

    • (단점) : 스터디 시간이 오래걸림, 사람마다 다를 수 있음

  • 챕터별로 키워드에 대한(예, 다형성) 의견 나눔

    • (장점) : 한 분야에 대해 다양한 사람이 참여할 수 있음, 두루두루 넓게 공부

    • (단점) : 말하는 사람만 말할 수 있음

  • 챕터별 예제를 만든 후, 서로 공유

    • (장점) : 공부한 부분에 대한 예제를 생각함으로써 응용이 가능하고, 예제 개수가 많아질 수 있음

    • (단점) : 준비시 생각보다 시간이 많이 들 수 있음

단 마지막엔 항상 몰랐던 부분이나 알게된 부분 공유


담당자별

  • 담당자 지정

    • (장점) : 담당한 부분을 상세히 조사해올 수 있음

    • (단점) : 담당하지 않은 부분을 포기할 수 있음

  • 담당자 미지정(제비뽑기 등으로 랜덤)

    • (장점) : 모든 부분을 심도있게 공부

    • (단점) : 준비 시간이 오래걸림, 부담감



장소와 시간

  • 시간

    • 요일 :

    • 시간 :

    • 횟수 : 주 1회(추정)

  • 장소

  • 장소 현황 (취합하여 결정)

    • A. 인천, 부천, 강남, 여의도 (거주지 인천)

    • B. 가산디지털단지, 서울대입구, 사당, 강남 (거주지 인천)

    • C. 판교, 강남, 사당, 선정릉, 잠실, 건대 (거주지 서울 강동)



스터디 유의사항

  • 공부방법 : 해당 챕터를 읽고, 예제 프로그램이 있다면 실행해보기

  • 금번에 혹은 기존에 진행했던 스터디의 질문 똑같이 재질문 금지

  • 책에 있는 내용 그대로를(책을 읽고 오지 않아) 질문하는 것 금지

  • 기타(정의중)



스터디 기준 책 및 진도(예상 안)

JAVA의 정석 #2판 LINK


예습:개인공부

Chapter 1 자바를 시작하기 전에

중분류 소분류
1. 자바(Java Programming Language) 1.1 자바란?
1.2 자바의 역사
1.3 자바언어의 특징
1.4 JVM(Java Virtual Machine)
2. 자바개발환경 구축하기 2.1 자바 개발도구(JDK)설치하기
2.2 Java API문서 설치하기
3. 자바로 프로그램작성하기 3.1 Hello.java
3.2 자주 발생하는 에러와 해결방법
3.3 자바프로그램의 실행과정
3.4 주석(comment)


Chapter 2 변수(Variable)

중분류 소분류
1. 변수(variable) 1.1 변수란?
1.2 변수의 선언
1.3 명명규칙(naming convention)
2. 변수의 타입 2.1 기본형(primitive type)
2.2 논리형 - boolean
2.3 문자형 - char
2.4 정수형 - byte, short, int, long
2.5 실수형 - float, double
3. 형변환 3.1 형변환(캐스팅, casting)이란?
3.2 형변환 방법
3.3 기본형의 형변환


Chapter 3 연산자(Operator)

중분류 소분류
1. 연산자(operator)  
2. 단항 연산자 2.1 증감 연산자 - ++, –
2.2 부호 연산자 - +, -
2.3 비트전환 연산자 - ~
2.4 논리부정 연산자 - !
3. 산술 연산자 3.1 사칙 연산자 -, +, -, *
3.2 나머지 연산자 - %
3.3 쉬프트 연산자 - 〈〈, 〉〉, 〉〉〉
4. 비교 연산자 4.1 대소비교 연산자 - 〈, 〉, 〈=, 〉=
4.2 등가비교 연산자 - ==, !=
5. 논리 연산자 5.1 논리 연산자 - &&, ||
5.2 비트 연산자 - &, |, ^
6. 그 외의 연산자 6.1 삼항 연산자 - ? :
6.2 대입 연산자 - =, op=


Chapter 4 조건문과 반복문

중분류 소분류
1. 조건문 - if, switch 1.1 if문
1.2 중첩 if문
1.3 switch문
2. 반복문 - for, while, do-while 2.1 for문
2.2 while문
2.3 do-while문
2.4 break문
2.5 continue문
2.6 이름 붙은 반복문


Chapter 5 배열(Array)

중분류 소분류
1. 배열(array) 1.1 배열(array)이란?
1.2 배열의 선언
1.3 배열의 생성
1.4 배열의 초기화
1.5 배열의 활용
1.6 다차원 배열
1.7 가변 배열
1.8 배열의 복사
1.9 커맨드라인을 통해 입력받기


Chapter 6 객체지향 프로그래밍 I

중분류 소분류
1. 객체지향언어 1.1 객체지향언어의 역사
1.2 객체지향언어
2. 클래스와 객체 2.1 클래스와 객체의 정의와 용도
2.2 객체와 인스턴스
2.3 객체의 구성요소 - 속성과 기능
2.4 인스턴스의 생성과 사용
2.5 클래스의 또 다른 정의
3. 변수와 메서드 3.1 선언위치에 따른 변수의 종류
3.2 클래스변수와 인스턴스변수
3.3 메서드
3.4 return문
3.5 메서드의 호출
3.6 JVM의 메모리구조
3.7 기본형 매개변수와 참조형 매개변수
3.8 재귀호출(recursive call)
3.9 클래스메서드(static메서드)와 인스턴스메서드
3.10 클래스멤버와 인스턴스멤버간의 참조와 호출
4. 메서드 오버로딩(method overloading) 4.1 메서드 오버로딩이란?
4.2 오버로딩의 조건
4.3 오버로딩의 예
4.4 오버로딩의 장점
5. 생성자(constructor) 5.1 생성자란?
5.2 기본 생성자(default constructor)
5.3 매개변수가 있는 생성자
5.4 생성자에서 다른 생성자 호출하기 - this(), this
5.5 생성자를 이용한 인스턴스의 복사
6. 변수의 초기화 6.1 변수의 초기화
6.2 명시적 초기화(explicit initialization)
6.3 초기화 블럭(initialization block)
6.4 멤버변수의 초기화 시기와 순서


Chapter 7 객체지향 프로그래밍 II

중분류 소분류
1. 상속(inheritance) 1.1 상속의 정의와 장점
1.2 클래스간의 관계 - 포함관계
1.3 클래스간의 관계 결정하기
1.4 단일상속(single inheritance)
1.5 Object클래스 - 모든 클래스의 조상
2. 오버라이딩(overriding) 2.1 오버라이딩이란?
2.2 오버라이딩의 조건
2.3 오버로딩 vs. 오버라이딩
2.4 super
2.5 super() - 조상 클래스의 생성자


스터디 1주차

Chapter 7 객체지향 프로그래밍 II : 스터디 1주차

중분류 소분류
3. package와 import 3.1 패키지(package)
3.2 패키지의 선언
3.3 import문
3.4 import문의 선언
4. 제어자(modifier) 4.1 제어자란?
4.2 static - 클래스의, 공통적인
4.3 final - 마지막의, 변경될 수 없는
4.4 생성자를 이용한 final 멤버변수 초기화
4.5 abstract - 추상의, 미완성의
4.6 접근 제어자(access modifier)
4.7 접근 제어자를 이용한 캡슐화
4.8 생성자의 접근 제어자
4.9 제어자(modifier)의 조합
5. 다형성(polymorphism) 5.1 다형성이란?
5.2 참조변수의 형변환
5.3 instanceof연산자
5.4 참조변수와 인스턴스의 연결
5.5 매개변수의 다형성
5.6 여러 종류의 객체를 하나의 배열로 다루기
6. 추상클래스(abstract class) 6.1 추상클래스란?
6.2 추상메서드(abstract method)
6.3 추상클래스 작성
7. 인터페이스(interface) 7.1 인터페이스란?
7.2 인터페이스의 작성
7.3 인터페이스의 상속
7.4 인터페이스의 구현
7.5 인터페이스를 이용한 다중상속
7.6 인터페이스를 이용한 다형성
7.7 인터페이스의 장점
7.8 인터페이스의 이해


Chapter 10 내부 클래스 : 스터디 1주차(챕터 순서 유의!!)

중분류 소분류
1. 내부 클래스(inner class)란?  
2. 내부 클래스의 종류와 특징  
3. 내부 클래스의 선언  
4. 내부 클래스의 제어자와 접근성  
5. 익명 클래스(anonymous class)  


Chapter 8 예외처리(Exception Handling) : 스터디 1주차(챕터 순서 유의!!)

중분류 소분류
1. 예외처리(exception handling) 1.1 프로그램 오류
1.2 예외처리의 정의와 목적
1.3 예외처리구문 - try-catch
1.4 try-catch문에서의 흐름
1.5 예외 발생시키기
.6 예외 클래스의 계층구조
1.7 예외의 발생과 catch블럭
1.8 finally블럭
1.9 메서드에 예외 선언하기
1.10 예외 되던지기(exception re-throwing)
1.11 사용자정의 예외 만들기


스터디 2주차

Chapter 9 java.lang패키지 : 스터디 2주차

중분류 소분류
1. Object클래스 1.1 equals메서드
1.2 hashCode메서드
1.3 toString메서드
1.4 clone메서드
2. String클래스 2.1 String클래스의 특징
2.2 빈 문자열(empty string)
2.3 String클래스의 생성자와 메서드
3. StringBuffer클래스 3.1 StringBuffer클래스의 특징
3.2 StringBuffer클래스의 생성자
3.3 StringBuffer인스턴스의 비교
3.4 StringBuffer클래스의 메서드
4. Math클래스 4.1 Math클래스
4.2 Math클래스의 메서드
5. wrapper클래스 5.1 wrapper클래스
5.2 Number클래스


Chapter 11 컬렉션 프레임웍과 유용한 클래스 : 스터디 2주차

중분류 소분류
1. 컬렉션 프레임웍(Collection Framework) 1.1 컬렉션 프레임웍의 핵심 인터페이스 - List, Set, Map
1.2 동기화(Synchronization)
1.3 Vector와 ArrayList
1.4 LinkedList
1.5 Stack과 Queue
1.6 Enumeration, Iterator, ListIterator
1.7 HashSet
1.8 TreeSet
1.9 Comparator와 Comparable
1.10 Hashtable과 HashMap
1.11 TreeMap
1.12 Properties
1.13 컬렉션 클래스 정리 & 요약
2. 유용한 클래스들 2.1 Calendar와 Date
2.2 Random
2.3 정규식(Regular Expression) - Pattern. Match
2.4 Scanner
2.5 StringTokenizer
3. 형식화 클래스 3.1 DecimalFormat
3.2 SimpleDateFormat
3.3 ChoiceFormat
3.4 MessageFormat
4. 제네릭스(Generics) 4.1 ArrayList〈E〉
4.2 Iterator〈E〉
4.3 Comparable〈T〉과 Collections.sort()
4.4 HashMap〈K,V〉


부록 - JDK 1.5에 추가된 기능 : 맨 뒤 챕터입니다!!!! (챕터 순서 확인 필요)

중분류 소분류
1. 향상된 for문  
2. 오토박싱(autoboxing)  
3. 타입에 안전한 열거형(Typesafe enums)  
4. 가변인수(Varargs)  
5. static import문  
6. StringBuilder  


스터디 3주차

Chapter 12 쓰레드(thread) : 스터디 3주차

중분류 소분류
1. 프로세스와 쓰레드  
2. 쓰레드의 구현과 실행  
3. start()와 run()  
4. 싱글쓰레드와 멀티쓰레드  
5. 쓰레드의 우선순위  
6. 쓰레드 그룹(thread group)  
7. 데몬 쓰레드(daemon thread)  
8. 쓰레드의 실행제어  
9. 쓰레드의 동기화 9.1 synchronized를 이용한 동기화
9.2 wait()과 notify()


람다 : 스터디 3주차

  • 책에는 없지만 3주차에 같이 진행하겠습니다.

  • 방식은 고민중


스터디 4주차

쓰레드 : 스터디 4주차

  • 책에는 없지만 3주차에 같이 진행하겠습니다.

  • 방식은 고민중


Chapter 14 입출력(I/O) : 스터디 4주차

중분류 소분류
1. 자바에서의 입출력 1.1 입출력이란?
1.2 스트림(stream)
1.3 바이트기반 스트림 - InputStream, OutputStream
1.4 보조스트림
1.5 문자기반 스트림 - Reader, Writer
2. 바이트기반 스트림 2.1 InputStream과 OutputStream
2.2 ByteArrayInputStream과 ByteArrayOutputStream
2.3 FileInputStream과 FileOutputStream
3. 바이트기반의 보조스트림 3.1 FilterInputStream과 FilterOutputStream
3.2 BufferedInputStream과 BufferedOutputStream
3.3 DataInputStream과 DataOutputStream
3.4 SequenceInputStream
3.5 PrintStream
4. 문자기반 스트림 4.1 Reader와 Writer
4.2 FileReader와 FileWriter
4.3 PipedReader와 PipedWriter
4.4 StringReader와 StringWriter
5. 문자기반의 보조스트림 5.1 BufferedReader와 BufferedWriter
5.2 InputStreamReader와 OutputStreamWriter
6. 표준입출력과 File 6.1 표준입출력 - System.in, System.out, System.err
6.2 표준입출력의 대상변경 - setOut(), setErr(), setIn()
6.3 RandomAccessFile
6.4 File
7. 직렬화(Serialization) 7.1 직렬화란?
7.2 ObjectInputStream과 ObjectOutputStream
7.3 직렬화가 가능한 클래스 만들기 - Serializable, transient
7.4 직렬화가능한 클래스의 버전관리


Chapter 15 네트워킹(Networking) : 스터디 4주차

중분류 소분류
1. 네트워킹(Networking) 1.1 클라이언트
1.2 IP주소(IP address)
1.3 InetAddress
1.4 URL(Uniform Resource Location)
1.5 URLConnection
2. 소켓 프로그래밍 2.1 TCP와 UDP
2.2 TCP소켓 프로그래밍
2.3 UDP소켓 프로그래밍


스터디 4주차에 할지 패스할지 고민중

Chapter 13 AWT(Abstract Window Toolkit) : 스터디 제외

중분류 소분류
1. AWT 1.1 AWT란?
1.2 AWT의 구성
1.3 컴포넌트(Component)
1.4 컨테이너(Container)
2. AWT의 주요 컴포넌트
2.1 Frame
2.2 Button
2.3 Choice
2.4 List
2.5 Label
2.6 Checkbox
2.7 TextField
2.8 TextArea
2.9 Scrollbar
2.10 Canvas
2.11 Panel
2.12 ScrollPane
2.13 Dialog
2.14 FileDialog
3. 그 외의 AWT 클래스 3.1 Font
3.2 Color
4. 메뉴만들기 4.1 메뉴를 구성하는 컴포넌트
4.2 PopupMenu
5. 레이아웃 매니저 5.1 레이아웃 매니저를 이용한 컴포넌트 배치
5.2 BorderLayout
5.3 FlowLayout
5.4 GridLayout
5.5 CardLayout
6. 이벤트 처리(Event Handling) 6.1 이벤트(Event)란?
6.2 이벤트의 발생과 처리
6.3 이벤트 처리방법
6.4 Adapter클래스
7. AWT의 그래픽 7.1 paint()와 Graphics
7.2 AWT쓰레드와 repaint()
7.3 Image를 이용해서 이미지 출력하기
8. 애플릿(Applet) 8.1 애플릿(Applet)이란?
8.2 Applet의 생명주기(Life cycle)와 주요 메서드
8.3 Applet의 보안 제약(Security restriction)
8.4 Applet과 HTML태그



진도의 경우 나가보고 조정이 있을 수 있으나,

지금부터 공부를 열심히하여 11월 안에 스터디 기본을 훑어보는 것을 모토로 하였으면 좋겠습니다.


전체를 100% 이해하고 넘어간다보다,

한 번은 스터디 준비하면서 일회독하시어 이런 개념이 있구나 정도로

두 번은 스터디를 진행하면서 아 다른사람들은 이런 문제가 있었고 이런걸 추가로 알고있구나 정도로 하면 될 것 같습니다.

언어는 개념을 알고 달달 외운다고 한 번에 다 알 수 있는 것이 아니라 개념을 잡고 쓰면서 익숙해지는 것이니까요!