Skip to the content.

- 자바 언어 기초(com.eomcs.lang)

- 학습 목표 달성 확인 목록

- [] 컴파일 할 때 -encoding 옵션을 붙여야 하는 경우와 그 이유를 아는가?(참조)

윈도우 cmd에서는 ASCII 기반의 코드 페이지를 사용한다 즉 한글 윈도우에서는 949코드페이지를 사용한다

그렇기 때문에 한글 윈도우의 명령 프롬프트에서 javac 명령어로 컴파일을 하게 되면 기본적으로 CP949에 맞춰 컴파일이 이루어진다

그래서 UTF-8로 된 코드를 CP949로 읽어 컴파일을 하느라 문자열이 깨져서 오류를 일으키는 것이다

javac -encoding utf-8 xxx.java

처럼 작성한다

- [] 인코딩과 디코딩을 설명할 수 있는가?

data—>특정코드—>원래 data

data에서 특정코드로 변환되는것이 encode(encoding)인코드라고 부르며

특정코드에서 원래data로 변환되는 것이 decode(decoding)디코드라고 부른다

이 둘을 합친것을 codec(코덱)이라고 인코딩이나 디코딩 혹은 둘다 할수 있는 하드웨어나 소프트웨어를 뜻한다.

- [] 폰트가 무엇이고 언제 사용되는지 알고 있는가?

컴퓨터의 폰트란 문자 그림이 들어있는 파일이다.

- [] 래스터 방식 폰트와 벡터 방식 폰트의 구동 원리를 설명할 수 있는가?

레스터 방식은 도트처럼 하나씩 색이 찍히는 방식이며 픽셀 그대로 출력하기 때문에 출력속도가 빠르다는 장점이 있지만

크기를 키우면 계단처럼 보이는 현상이 있다.

벡터방식은 색에 대한 좌표값이 있다.매번 명령에 따라 그리기때문에 크기를 키워도 계단현상이 없으며

단점으로는 출력 속도가 느리다.

- [] JVM에서 문자를 다루는 방식을 아는가?(출처)

데이터가 java 프로그램에서 읽혀질 때 file.encoding과 일치하는 문자 인코딩으로 되어 있을 것으로 예상한다.

데이터가 java 프로그램에 의해 파일에 기록될 때 file.encoding과 일치하는 문자 인코딩으로 기록된다.

- [] 변수가 무엇인지 설명할 수 있는가?

변수란 값을 저장하는 메모리로 문법으로는

데이터타입 변수명 = 100;

메모리를 준비시키는 명령이다.

변수명은 l-value이며 항상 변수이어야 한다.

100은 r-value이며 변수,리터럴,값을 리턴하는 명령문이다.

- [] 변수 선언이 무엇인지 설명할 수 있는가?

메모리를 준비시키는 명령이다.

- [] 데이터타입과 변수의 관계를 이해하는가?

데이터타입으로 변수를 만든다.

변수의 생성은 메모리의 생성을 의미한다.

변수에는 데이터 타입에서 명시한 값을 넣을 수 있다.

- [] 자바 원시 타입의 변수를 선언하고 값을 할당할 수 있는가?

    //- 정수
    byte b;  // 1바이트 크기의 메모리
    short s; // 2바이트 크기의 메모리 
    int i;   // 4바이트 크기의 메모리 
    long l;  // 8바이트 크기의 메모리
    
    //- 부동소수
    float f;   // 4바이트 크기의 메모리
    double d;  // 8바이트 크기의 메모리
    
    //- 문자코드
    char c;  // 2바이트 크기의 메모리
    
    //- 논리
    boolean bool;  // 자바 언어 명세서에는 메모리의 크기가 정의되어 있지 않다. 다만 JVM 명세서에는 int 로 다룬다고 나와있다.

- [] 자바 원시 타입 변수와 레퍼런스 변수의 차이점을 이해하는가?

원시타입의 변수는 데이터가 직접적으로 저장되는것이며

레퍼런스 변수는 값이 아닌 값이 저장된 곳의 주소가 저장되는 원리이다.

예를들어 집문서에 집이 들어있는것이 아닌 집이 어디에 있다는 주소를 나타내는것과 같은 논리이다.

- [] 배열을 생성하고 배열의 각 항목의 값을 다룰 수 있는가?

1 int[] arr = new int[배열길이];

2 int[] arr;
 arr = new int[배열길이];

3 int[] arr = {1,2,3,4,...};

- [] 배열을 이용하여 인스턴스와 가비지를 설명할 수 있는가?

int[] arr = new int[5];

예를 들어 arr이 200이라는 주소값을 가지고 있다.

그러나 400이라는 배열을 new연산자로 인해 인스턴스화가 되면

200에 대한 주소값을 잃기 때문에 200이라는 배열은 사용할 수 없는 배열이 되므로

이때 GC(Garbage Collector)가 동작하여 쓸모없는 메모리를 자동으로 정리해준다.