Wanna be Brilliant Full-Stack Developer

2/14 Java 자료형 메모리 구조 개념 익히기! 본문

Some Memos/Java

2/14 Java 자료형 메모리 구조 개념 익히기!

Flashpacker 2022. 2. 15. 00:47


목표

자료형 메모리가 무엇인지 마스터해보자!

 

컴퓨터에 있는 RAM이 메모리라고 한다. 이 램들은 다 칸을 가지고있는데 왜 가지고 있냐면 번호를 가지고있기 떄문이다! 0번지 부터 포함한다! 0 , 1 , 2 , 3 ,4 ,5, 6 , 7 

서랍은 총 8등급으로 되어있다.  그 한칸을 1 bit라고 한다! 

1 bit는 우리가 하나의박스라고 했는데 0아니면 1을 저장할수 있는 저장영역! 

컴퓨터에서 가장 작은 단위를 비트라고한다! 

그러면 이 칸은 bit가 몇개가 모여서 만들어진것이냐면 총 8개의 비트로 이루어졌고 그것을 8bit라고 부른다!

 

먼가 10비트로 만들면 좋을꺼같은데 왜 8비트로 만들었을까?

8비트라는 데이터 공간은  2의 8승이니까 경우의 수가 256개를 표현할 수 있고

256가지 경우의 수는 영어를 한문자를 표현할수 있는 최소단위 

메모리는 8비트는 영어 한문자를 저장할 수 있으니까 메모리의한칸을 8비트로 만들자 해서

한칸을 8비트 로 만들어졌다! 이거를 한칸 한칸을 비트로 부르면 부르기어려우니까

8bit를 논리적인 단위인 바이트로 부르기 시작합니다! 

결국 1바이트는 8비트고 메모리 서랍장의 한칸을 1바이트이다.

우리가 전에 배웠던 Int 와 Double char을 보자면 

int는 4바이트 더블은 8바이트 , char은 2바이트 

결국 코드에다가 int라고 적는 순간 컴퓨터에게 알려주는것이다. 

야 메모리에 4바이트 공간이 필요해!

이렇게 데이터타입을 정하는것이 컴퓨터에게 메모리 공간을 알려주는것이다 

8 바이트 중에 어느 공간을 사용할지 정해야한다.

만약 4바이트가 필요하면 남는공간 아무 4칸을 잡는다! 

나 4바이트 필요해 3번지에! ( = 이라는것은 대입연산자 )

4바이트 공간에 숫자 1000을 넣을거야 , 다적고나서 문장을 마무리하기 위해서는 세미콜론(;) 이라는것이 필요하다 

값을 초기화 한다는것은 어떤 값을 메모리 공간에 집어넣었다는 것이다. 

 

머리가 아픈것이 머냐면 내가(개발자) 가 3번지를 1000에 넣었다고 이렇게 코드를 적는것은 굉장히 힘이 들다.

Ram에서 어느 공간이 지금 사용되지 않는곳을 찾아야하는데 그것을 개발자 입장에서 찾는것이 굉장히 어렵다.

 

3번지라고 적지 않고 어떻게 적냐면 n1 이라고 적는다. n1은 메모리의 어느 공간인가? 그것은 우리가 몰라도된다.

n1에 1000을 넣으면 컴퓨터가 알아서 이 메모리 공간에 남는 공간을 찾아서 그 공간을 확보하고 그 시작번지가 어딘지 기억을 해놓고 n1이 3번지라고 기록을 해놓는다. 

그다음에 Double은 8바이트에 다가 값을 넣고싶을떄 메모리 공간을 지금 보니까 용량이 모잘라서 지금 가지고 있는 메모리에서는 넣을 수 없다.

Char 은 2바이트 C1 = '가' 로 한다면 남는 공간에 2바이트에 '가'를 넣어놓고 1번지에 C1이라고 적어놓는다.

 

나중에 찾을떄 이름 n1, c1으로 찾으면 되는데 실제로는 나는 c1을 찾아야해 그러면 바로 메모리로 가지않고 기록적혀 있는곳으로 가서 c1이 어디있는지 확인하고 1번지로가서 데이터를 어디까지읽냐면 char은 2바이트니까 2칸을 읽고 

그 영역을 읽어낼수 있다. 

 

총 14바이트 + 2비트가 필요하겠다라고 자동으로 컴파일시 설계가 된다.

 

System.out.println(); 이 무엇이냐면 시스템에 , 모니터에, 출력하겠다는 명령어이다.

여기에대 머를 출력할것이냐면 c1을 넣고 저장하면 컴파일이 되고 컴파일이 된다는것은 이영어 문자를 .class로 바꾸는 것이다. JVM이 이해할수 있도록! 

 

내가 번지를 찾을 필요가 없이 나는 영어 단어로 기억을 하면 되는데 이런것들을 변수라고 한다!

왜 변수라고 부르냐면 변할 수 있는 수라고 한다. 

메모리공간에 저장되는 어떤 값들을 변수에 저장한다.

변수에 저장하면 번지를 찾아낼 수 있다.  변수정보 테이블에서 찾아낼수 있다.

 17번 에서 일어난 일은? n1의 값을 50으로 변경했으니까 새로운 공간을 만들어내는것 이아니라

n1의 공간에 있던 1000을 50으로 변경하는것이다. 

변할 수 있는 수라고 해서 변수라고 한다!

이미 만들어진 변수에 값을 변경할때는 앞에 데이터타입을 또다시 적지 않아도 된다!