nme.kr

목차

퀴즈 정리

[Quiz] 1차 중간평가

자바실행환경(Compile Time, Run Time)

  • 자연어를 기계어로 번역하는 방식은 두 가지가 있다.
  1. 컴파일(Compile)은 파일 전체를 읽어들여 실행 속도는 빠르나 파일 작성이 어렵고 자원이 낭비된다는 단점이 있다.
  2. 인터프리터(Interpreter) 언어는 실행에 필요한 부분만 읽어들이기에 입력이 쉬우나 실행 속도는 느리다는 단점이 있다.
  • 자바의 실행환경인 JRE는 위 두 가지 번역 방법을 모두 사용하여 효율적인 실행환경을 제공하고 있으며 이러한 방식을 JIT(Just In Time)이라고 한다.
  • JIT의 작동방식을 간략하게 설명하자면, 자바 파일(자바 프로그램 코드)을 바이트코드로 변환한 후, 이를 실행하는 시점에서 기계어로 번역하는 방식이다. 세부적인 작동방법은 아래와 같다.
  1. 먼저 자연어로 작성된 자바파일을 바이트 코드로 변환한다. 바이트코드는 자연어와 기계어의 중간단계 언어로, 가상머신에 의해 빠르게 번역될 수 있는 코드이다.
  2. 이렇게 바이트코드로 컴파일된 파일은 Run Time으로 넘어간다. 이때 이 파일의 내용이 하드디스크나 웹 등 외부환경에서 컴퓨터 메모리 영역으로 넘어간다.
  3. Run Time 환경으로 넘어가면, 프로그램을 실행시키면서 이때부터 바이트코드→기계어로의 번역을 인터프리티 방식으로 진행한다.

객체라이프사이클 (클래스 정의)

  • 클래스는 크게 두 가지로 구분된다.

1. 실행클래스는 클래스를 실행 가능하며, 그렇기 때문에 최소 진입점이 되고, 따라서 전체 어플리케이션에서 1개만 존재한다. 실행을 위한 메소드를 가지고 있으며, 해당 메소드는 통상 main()메소드라고 부르고 아래와 같이 작성된다.

public static void main(String[] args){
}
2. 헬퍼클래스는 실행이 불가능한, 호출대상이 되는 클래스로 전체 어플리케이션에서 실행클래스를 뺀 나머지가 모두 헬퍼클래스이다. 실행을 하는 클래스가 아니기 때문에 main()메소드가 없다.

  • 클래스는 멤버필드와 멤버메소드를 가지고 있으며 다음과 같은 형태로 정의된다.

예) Student라는 이름의 클래스가 멤버필드 String name과 멤버메소드 getter, setter를 가질 때

class Student { //class 클래스 이름의 형태로 내부 구성요소를 가짐
    String name; // 멤버필드
    void setName(String name) { // 멤버메소드 setter
        this.name = name;
        }
        String getName(){ //getter
        return name;
    }
}
좌측의 class인 Student는, 멤버필드로 String name을 가지고 멤버메소드로 getter, setter를 갖는 헬프클래스라고 할 수 있다.

  • 객체의 라이프 사이클은 위의 정의된 클래스의 객체를 이용하기 위해 생성 → 소멸까지의 과정이다.
  1. 클래스 정의
  2. 객체참조변수 선언 Student st;
  3. 객체 생성 new Student
  4. 생성자 호출 new Student();
  5. 주소 할당 st =
  6. 객체 사용 st.setName(“홍길동”)
  7. 객체 소멸 st = null;

멤버필드 (타입, 크기)

  • 멤버 필드는 클래스를 구성하는 변수이다. 클래스를 구성한다는 것의 의미는 클래스 내부 메소드의 변수처럼 클래스의 하위 영역에 소속되어 있다는 것이 아닌, 클래스 자체를 구성함을 의미한다. 예를 들어, 아래 클래스를 보자.

class Main {
    public static void main(String[] args) {
        int num;
    }
}

여기서 int num은 멤버 필드가 아니다.

class Help {
    int help;
}

여기서 int help는 멤버 필드이다.
  • 멤버 필드의 타입은 크게 2가지로 구분된다.
  1. 원시타입은 실제 '값'을 갖는 타입으로 정수, 실수, 불린, 문자의 4가지 종류가기 있다. 각 종류의 형태와 데이터 크기는 다음과 같다.
분류 종류(byte)
정수 byte(1), short(2), int(4), long(8)
실수 float(4), double(8)
논리 boolean(1)
문자 char(2)

2. 클래스 타입은 '주소'를 값으로 갖는 타입을 말하며 크기는 특정되지 않는다.

String name = “홍길동”;
Student st = new Student();

멤버메소드 (구조)

형변환 (타입, 크기)

[Quiz] 2차 중간평가

Variable Scope

조건문

반복문

배열

다차원배열

[Quiz] 3차 중간평가

변수의 명명규칙

형식화된 출력, printf()

커맨드 라인 입력

패키지 vs import

클래스 유형

[Quiz] 4차 중간평가

Constructor

Overloading

Overriding

Modifier

this, this()

[Quiz] 5차 중간평가

super, super()

static

final 클래스, final 메소드, final 상수

Call by Value

Call by Reference

[Quiz] 6차 중간평가

품질 1단계

품질 2단계

품질 3단계

품질 4단계

품질 5단계

[Quiz] 7차 중간평가

캡슐화 + 데이터무결성

상속(Is-a)

다형성

싱글톤

초기화 블록 (생성자, static 블록, 인스턴스 블록)

[Quiz] 8차 중간평가

Association

Dependency

Composition

Aggregation

Design Goals 8가지

[Quiz] 9차 중간평가

Object-Oriented Design Concepts 7가지

Object-Oriented Design Principles 3가지

품질6단계

품질7단계

예외정의, 예외발생, 예외처리

[Quiz] 10차 중간평가

User-Defined 예외클래스 정의

try{} catch(){} finally {}

throw, throws

ArrayIndexOutOfBoundsException

User-Defined 예외클래스 적용한 덧셈기 (0을 더하는 경우 예외발생)

[Quiz] 11차 중간평가

Properties

Iterator

람다식

스레드 생성

스레드 우선순위

[Quiz] 12차 중간평가

스레드 데이터 공유

품질 10단계

Banking Project 품질1단계

Banking Project 품질2단계

Banking Project 품질3단계

[Quiz] 13차 중간평가

Banking Project 예외처리 (품질8단계, 품질9단계)

Banking Project 품질10단계

컬렉션

제네릭

스트림

[Quiz] 14차 중간평가

바이트 기반 입력 스트림

문자 기반 입력 스트림

계산기 프로젝트 (Properties + 파일I/O)

TCP 소켓 프로그래밍

UDP 소켓 프로그래밍