nme.kr

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
프로그램:java:ㄴhomework:quiz [2022/01/14 19:10]
clayeryan@gmail.com [자바실행환경(Compile Time, Run Time)]
프로그램:java:ㄴhomework:quiz [2023/07/13 17:29] (현재)
clayeryan@gmail.com ↷ 문서가 programmer:java:ㄴhomework:quiz에서 프로그램:java:ㄴhomework:quiz(으)로 이동되었습니다
줄 7: 줄 7:
   - 컴파일(Compile)은 파일 전체를 읽어들여 실행 속도는 빠르나 파일 작성이 어렵고 자원이 낭비된다는 단점이 있다.   - 컴파일(Compile)은 파일 전체를 읽어들여 실행 속도는 빠르나 파일 작성이 어렵고 자원이 낭비된다는 단점이 있다.
   - 인터프리터(Interpreter) 언어는 실행에 필요한 부분만 읽어들이기에 입력이 쉬우나 실행 속도는 느리다는 단점이 있다.   - 인터프리터(Interpreter) 언어는 실행에 필요한 부분만 읽어들이기에 입력이 쉬우나 실행 속도는 느리다는 단점이 있다.
 +  *자바의 실행환경인 JRE는 위 두 가지 번역 방법을 모두 사용하여 효율적인 실행환경을 제공하고 있으며 이러한 방식을 JIT(Just In Time)이라고 한다.
 +  *JIT의 작동방식을 간략하게 설명하자면, 자바 파일(자바 프로그램 코드)을 바이트코드로 변환한 후, 이를 실행하는 시점에서 기계어로 번역하는 방식이다. 세부적인 작동방법은 아래와 같다.
 +
 +  - 먼저 자연어로 작성된 자바파일을 바이트 코드로 변환한다. 바이트코드는 자연어와 기계어의 중간단계 언어로, 가상머신에 의해 빠르게 번역될 수 있는 코드이다.
 +  - 이렇게 바이트코드로 컴파일된 파일은 Run Time으로 넘어간다. 이때 이 파일의 내용이 하드디스크나 웹 등 외부환경에서 컴퓨터 메모리 영역으로 넘어간다.
 +  - Run Time 환경으로 넘어가면, 프로그램을 실행시키면서 이때부터 바이트코드->기계어로의 번역을 인터프리티 방식으로 진행한다.
 ==== 객체라이프사이클 (클래스 정의) ==== ==== 객체라이프사이클 (클래스 정의) ====
 +  *클래스는 크게 두 가지로 구분된다.
 +1. 실행클래스는 클래스를 실행 가능하며, 그렇기 때문에 최소 진입점이 되고, 따라서 전체 어플리케이션에서 1개만 존재한다. 실행을 위한 메소드를 가지고 있으며, 해당 메소드는 통상 main()메소드라고 부르고 아래와 같이 작성된다.
 +<code java>
 +public static void main(String[] args){
 +}
 +</code>
 +2. 헬퍼클래스는 실행이 불가능한, 호출대상이 되는 클래스로 전체 어플리케이션에서 실행클래스를 뺀 나머지가 모두 헬퍼클래스이다. 실행을 하는 클래스가 아니기 때문에 main()메소드가 없다.
 +
 +  *클래스는 멤버필드와 멤버메소드를 가지고 있으며 다음과 같은 형태로 정의된다.
 +예) ''Student''라는 이름의 클래스가 멤버필드 ''String name''과 멤버메소드 ''getter, setter''를 가질 때
 +<code java>
 +class Student { //class 클래스 이름의 형태로 내부 구성요소를 가짐
 +    String name; // 멤버필드
 +    void setName(String name) { // 멤버메소드 setter
 +        this.name = name;
 +        }
 +        String getName(){ //getter
 +        return name;
 +    }
 +}
 +</code>
 +좌측의 class인 Student는, 멤버필드로 String name을 가지고 멤버메소드로 getter, setter를 갖는 헬프클래스라고 할 수 있다.
 +
 +  * 객체의 라이프 사이클은 위의 정의된 클래스의 객체를 이용하기 위해 생성 -> 소멸까지의 과정이다.
 +
 +<WRAP box>
 +  - 클래스 정의
 +  - 객체참조변수 선언 ''Student st;''
 +  - 객체 생성 ''new Student''
 +  - 생성자 호출 ''new Student();''
 +  - 주소 할당 ''st = ''
 +  - 객체 사용 ''st.setName("홍길동")''
 +  - 객체 소멸 ''st = null;''
 +</WRAP>
  
 ==== 멤버필드 (타입, 크기) ==== ==== 멤버필드 (타입, 크기) ====
 +  * 멤버 필드는 클래스를 구성하는 변수이다. 클래스를 구성한다는 것의 의미는 클래스 내부 메소드의 변수처럼 클래스의 하위 영역에 소속되어 있다는 것이 아닌, 클래스 자체를 구성함을 의미한다. 예를 들어, 아래 클래스를 보자.
 +<code java>
 +class Main {
 +    public static void main(String[] args) {
 +        int num;
 +    }
 +}
 +</code>
 +>**여기서 int num은 멤버 필드가 아니다.**
 +<code java>
 +class Help {
 +    int help;
 +}
 +</code>
 +>**여기서 int help는 멤버 필드이다.**
 +
 +  * 멤버 필드의 타입은 크게 2가지로 구분된다.
 +  - 원시타입은 실제 '값'을 갖는 타입으로 정수, 실수, 불린, 문자의 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();
 ==== 멤버메소드 (구조) ==== ==== 멤버메소드 (구조) ====
  
줄 158: 줄 226:
  
 ==== 스트림 ==== ==== 스트림 ====
- + 
 +=====  [Quiz] 14차 중간평가 ===== 
 + 
 +==== 바이트 기반 입력 스트림 ==== 
 + 
 +==== 문자 기반 입력 스트림 ==== 
 + 
 +==== 계산기 프로젝트 (Properties + 파일I/O) ==== 
 + 
 +==== TCP 소켓 프로그래밍 ==== 
 + 
 +==== UDP 소켓 프로그래밍 ====