시작

앞 1에 이어서 static, final 구조 및 public, private 구조에 대해 살펴보겠습니다.

또, 배열 선언 방법과 자바에서 지역변수, 전역변수의 경우 초기화하지 않으면 발생하는 문제에 대해 알아보겠습니다.

 

수식자

수식자의 경우 클래스, 메서드, 필드에 대해 제약을 걸어주는 것입니다. 

이 경우 public 과 private는 단어자체에서 알 수 있듯이 public의 경우 접근 제한이 없고,

private는 자기 자신의 클래스 내에서만 접근이 가능한 경우입니다. 

그래서 보통의 경우 public으로 수식어를 붙여 사용합니다. 

함수를 생성할 때 수식자를 작성해주지 않으면 default로 public으로 선언됩니다. 

 

이 다음으로는 static, final에 대해 알아보겠습니다.

final 수식자의 경우에는 변수를 상수화 시키는데 목적이 있습니다. 한번 결정된 변수의 값은 변경이 불가 합니다. 

final 메소드의 경우에는 오버라이딩을 허용하지 않습니다.

(*오버라이딩 :
상속받은 부모 객체의 함수명을 다시 선언해서 재정의 하는 경우, return type, parameter type 그리고 개수가 똑같아야 합니다.)

static 변수는 메모리의 공간에 하나만 존재하기 때문에 어디서나 접근을 허용합니다. 

따라서, static 변수의 경우에는 데이터의 공유가 필요할 때 이며

static 메소드의 경우에는 인스턴스 생성하지 않아도 접근을 가능하게 해줍니다. 

static 변수는 인스턴스가 생성되기 이전에 별도의 메모리 공간에 할당되어 초기화까지 완료됩니다.
(JVM에 의해서 클래스가 메모리에 올라가는 시점에서 초기화됩니다.)

그래서 문제를 해결할 경우에는 static 메소드를 선언해서 main 메소드에서 바로 접근할 수 있습니다. 

static을 붙이지 않으면

Cannot make a static reference to the non-static method TestFunction(int[]) from the type test2

같은 이슈가 발생한다.

 

배열 선언 방법

배열은 동일한 타입의 연관된 데이터를 메모리에 연속적으로 저장하는 자료구조 입니다. 타입이 다른 경우 Class를 정의해서 사용합니다. 

 

Class 선언 방법 

class 정의시 setter, getter를 보통 정의해주게 되는데,

문제를 풀 때는 class안에 여러 타입을 정의해서 초기화하여 class 객체를 자료구조의 타입으로 사용하게 됩니다. 

class 선언할 때 class의 이름으로 생성자를 만들고 값을 초기화 해주어야 합니다. 

아래의 구조는 ArrayList의 타입이 만들어진 class 를 사용한 경우입니다. 

 

 

지역 변수, 전역 변수 초기화

전역변수의 경우 초기화 해주지 않으면 타입이 int인 경우 0으로 초기화 됩니다. 

지역변수의 경우 초기화 해주지 않으면 에러가 발생하니 주의해야 합니다.