-

[JAVA 문법 Step 3] - 자바의 자료형과 메모리 구조 본문

CS/JAVA

[JAVA 문법 Step 3] - 자바의 자료형과 메모리 구조

흣차 2021. 11. 26. 22:14
728x90
반응형

자바의 자료형은 대표적으로 int, boolean, double, char 가 가장 많이 쓰이는 4가지입니다.

자바를 사용하다 보면 '컴파일한다'는 이야기를 많이 듣게 됩니다.

이는 작성한 자바 클래스 파일을 저장하게 되면 생기는 현상입니다.

컴퓨터에서 자바 클래스를 읽을 수 있게 미리 메모리에 공간을 배정해놓는다고 이해하면 됩니다.

이런 경우를 살펴보겠습니다.

b1, b2는 boolean타입이고 n1,d1,c1에 각각 값을 넣었습니다.

그리고 n1은 int타입, d1은 double타입, c1은 char타입을 선언했습니다.

다 작성한 후 ctrl + s를 누르면 이 클래스 파일이 저장됨과 동시에 메모리에 컴파일됩니다.

그리고 이것들을 출력할 수 있는데, System.out.println(인자); 라고 입력하면 출력할 수 있습니다.

자바는 신기하게도 선언했던 값을 아주 쉽게 변경할 수 있습니다.

제일 처음 n1을 1000으로 선언했지만, 17번째 줄에서 n1 = 50이라고 변경하고 다시 출력하니

제일 밑에 n1이 50이라고 나옵니다. 이처럼 자바에서는 값에 대한 변경이 아주 용이합니다.

 

자 다시, 자바를 제대로 이해하려면 여기 적혀있는 모든 것들을 알아야겠죠?? 

차근차근 짚고 넘어가보겠습니다.

우리가 선언했던 모든 b1,b2를 포함하여 18번째 줄에있는 System.out.println문까지 전부 main이라는 것 안에 있습니다.

이렇게 n2는 class 안에, n3는 class 밖에 작성한다고 해봅시다.

그랬더니 n3에 띄워지는 빨간 줄 보이시나요??? 

Syntax 에러가 뜨는 것을 확인할 수 있습니다. 즉 구문에러라는 뜻입니다.

반드시 기억해야할 것이 자바에서 모든 코드는 반드시 클래스 내부에 존재해야 합니다.

자 이걸 보시면 뭐라고 적혀있나요???

static이 아니라서 n2를 사용할 수 없다고 하네요.

즉, n2는 main밖에 있어서 실행하지 않는다는 것입니다.

우리는 이전 포스팅에서 static이 뭔지 배웠습니다. 이것을 제대로 이해하면 자바가 훨신 쉬워질 것입니다.

자 여기서 또 중요한 사실이 있습니다. 자바를 실행하면 main이라는 친구의 내부를 실행하고 내부가 끝나면 종료됩니다. 그럼 위의 코드에서 n1이 가장 먼저 메모리에 할당이 되고 9번재 줄에서 n1을 실행합니다.

근데 n2를 출력하려 하는데 n2는 메모리에 뜨지 않습니다. 이유는 n2가 main안에 없기 때문이죠.

다시 여기서 알아야 할 것이 있습니다. 자바는 static이라는 키워드를 가지고 있는 모든 친구들을 static 메모리 공간에 로드합니다. 저 코드에서 static이 띄워져있는 곳이 어디인가요?? main이지요??? 따라서 main이 가장 먼저 메모리에 띄워지고 그 메모리부터 우선적으로 처리를 하는 것이며 main이 종료되면 자바도 종료되는 것입니다.

따라서 main 외부에 있는 n2를 사용하려면 어떻게 해야될까요???

n2를 static에 넣으면 되지 않을까요???

2가지 방법이 있습니다. 하나는 main 안에 int n2를 넣을 수있을 것이고

나머지 하나는 

n2를 static하게 선언하면 됩니다. 

핵심만 정리해보겠습니다.

도움이 되셨나요?

감사합니다.

728x90
반응형
Comments