Skip to the content.

- 학습 목표 달성 확인 목록

- [] JVM의 file.encoding 프로퍼티의 용도를 알고 있는가?

컴파일시 해당 코드를 cmd에 명령하지 않으면 소스 파일내의 한글이 제대로 표시되지 않는다.

특히 윈도우같은경우엔 기본으로 ms949라서 특히 깨지는 현상이 있다.그래서 해당 코드를 추가해야하며

맥이나 리눅스같은 경우엔 utf-8이 기본이여서 따로 변환하지 않아도 된다.

- [] file.encoding 프로퍼티를 설정하지 않으면 기본 character set 은 무엇인가?

운영체제마다 다르기 때문에

윈도우경우 ms949

맥과 리눅스 유닉스경우엔 utf-8이다.

- [] 클래스 멤버 @Deprecated 애노테이션이 붙은 경우 무엇을 의미하는지 아는가?

사전적의 의미로는 중요도가 떨어져 더 이상 사용되지 않고 앞으로는 사라지게될 의미의 형용사이다.

java api에서는 존재는 하오나 하위 호환성을 고려하여 설계되어 있기 때문에 버전업이 되어 더이상 사용되지 않는 클래스나 메소드라고 바로 삭제하지 않고 Deprecated라는 단어를 사용하여 표시한다.(오래전에 만들어진 프로그램들을 위해 남겨놓은 메서드이다)

예)Date클래스->Calendar클래스

- [] 생성자의 접근 범위가 private이나 protected 으로 막혔을 때 그 의미를 이해하는가?

protected는 같은 패키지 또는 자식클래스에서 사용 할 수 있는 멤버를 만든다.

private는 단어 뜻 그대로 개인적이라는 것이며 외부에 노출되지 않는 멤버를 만든다.

- [] 인스턴스 메서드와 스태틱 메서드의 용도를 이해했는가?

먼저 스태틱 메서드는 객체(new를 이용한 인스턴스화)를 생성하지 않고 클래스명.메서드명(); 으로 호출이 가능하다.(클래스로딩시에 바로 메모리에 생성되기 때문이다.)

그렇기에 모든 인스턴스에 공통으로 사용하는 것에 스태틱을 붙여서 모든 인스턴스에서 같은 값이 유지되어야하는 변수는 static을 붙여 클래스변수로 정의한다.

인스턴스 메서드는 반대로 반드시 객체를 생성한 후에 호출이 가능하다 즉 인스턴스가 반드시 존재해야만 사용할 수 있다.

public class S {
//리턴값이 없는 메서드
    void print(int a) {
        System.out.println(a);
    }

    public static void main(String[] args) {
        S s = new S();//new를 사용한 인스턴스화
        s.print(5);
    }
}

//결과
5

스태틱 메서드느 인스턴스 변수를 사용할수 없지만 반대로 인스턴스 메서드에서는 스태틱 변수를 사용할 수 있다.

-정리하자면 모든 인스턴스에 공통된 값을 유지해야 할 필요가 있을 경우에는 static을 붙여준다

-메서드 중에서 인스턴스와 관계없는 메서드를 스태틱 메서드로 정의한다.

- [] 상수를 사용하는 이점과 용법을 알고 있는가?

먼저 상수는 final이 붙으므로 프로그램 도중에 수정할 수 없는 수이다.

그래서 프로그램에서 사용하는 공통코드나 자주사용하는 문자 또는 숫자는 상수필드로 따로 생성한다.

그렇기에 가독성을 높여준다.

final static YEAR = 2021;
//스태틱을 붙이 이유는 단 하나만 생성할 수 있기 때문에 final과 static이 같이 붙는 이유는
인스턴스 변수처럼 만들어질때마다 새로 메모리를 잡고 그러는것이 아니라
한번만 잡아서 하나의 메모리 공간을  쓰면 되기 때문이다.

- [] 배열을 활용하여 생성된 객체(의 주소)를 등록하고, 조회하고, 변경하고, 삭제할 수 있는가?

%[https://gist.github.com/osk2090/0a40bbe4f1e609673124eb833c1d8cb3]