1. 기억은 어떻게 구성되는가

모든 컴퓨터에는 내부 메모리가 있습니다 . 뭐야? 어떤 속성이 있습니까? 그리고 가장 중요한 것은 그것이 우리에게 어떤 유익을 주는가?

모든 프로그램( Java로 작성된 프로그램 포함)은 실행되기 전에 메인 메모리 에 로드됩니다 . 주 메모리에는 프로그램 데이터(즉, 프로그램 자체가 메모리에 넣는 데이터)뿐만 아니라 프로그램 코드(프로세서에 의해 실행됨)가 포함됩니다.

기억이란 무엇이며 어떤 것인가?

Excel 스프레드시트는 셀로 구성됩니다 . 각 셀에는 고유한 식별자 ( A1, A2, ... B1, B2)가 있습니다. 셀의 식별자를 알고 있으면 항상 셀에 값을 쓰거나 거기에 저장된 값을 가져올 수 있습니다. 컴퓨터 메모리는 매우 유사한 방식으로 구성됩니다.

프로그램 및 프로그램 데이터는 프로그램이 실행될 때 메모리 에 저장됩니다. 모든 컴퓨터 메모리는 바이트 라고 하는 작은 셀로 구성됩니다 . 각 셀에는 이와 관련된 고유 식별자 또는 번호가 있습니다. 0, 1, 2, 3, ...; (번호 매기기는 0부터 시작합니다). 셀 번호를 알면 데이터를 저장할 수 있습니다. 또는 데이터를 가져옵니다. 일부 셀은 프로그램 코드, 즉 프로세서에 대한 명령 세트를 저장합니다. 다른 것들은 프로그램에서 사용하는 데이터를 저장합니다. 셀 번호는 셀 주소 라고도 합니다 .

프로세서는 메모리에 로드된 명령을 실행하는 방법을 알고 있습니다. 거의 모든 프로세서 명령은 일부 셀에서 데이터를 가져와 관련 작업을 수행한 다음 결과 를 다른 셀로 보내는 것과 같습니다 .

수백 가지의 간단한 명령을 결합하여 복잡하고 유용한 명령을 얻습니다.

변수가 코드에서 선언되면 아직 사용되지 않는 메모리 청크가 할당됩니다. 이것은 일반적으로 몇 바이트입니다. 변수를 선언하려면 프로그램이 변수에 저장할 정보 유형(숫자, 텍스트 또는 기타 데이터)을 지정해야 합니다. 결국 저장할 정보의 유형을 모르면 변수에 할당해야 하는 메모리 블록의 크기가 명확하지 않습니다.

컴퓨터 시대의 여명기에 프로그램은 메모리 주소로 직접 작업했지만 프로그래머의 편의를 위해 셀에 이름이 지정되기 시작했습니다. 프로그램이 일반 메모리 주소를 잘 처리하기 때문에 고유 변수 이름은 무엇보다 프로그래머의 편의를 위한 것입니다.


2. 메모리의 변수

전체적으로 Java에는 정수를 저장하기 위한 4가지 데이터 유형이 있습니다. 이들은 byte, short, int입니다 long.

유형 크기(바이트) 유형 이름의 유래
byte 1 byte는 bit와의 혼동을 피하기 위해 고의적으로 bite를 다시 표기한 것입니다.
short 2 Short Integer 의 줄임말
int 4 정수 의 약자
long 8 Long Integer 의 약자

또한 Java에는 실수에 대한 두 가지 유형(float 및 double)이 있습니다.

유형 크기(바이트) 유형 이름의 유래
float 4 부동 소수점 숫자 의 약자
double 8 Double Float 의 약자

프로그램 실행이 변수 생성 명령에 도달할 때마다 작은 메모리 블록이 변수에 할당됩니다(크기는 변수 유형에 따라 다름).

변수의 주소는 할당된 메모리 블록의 첫 번째 셀의 주소입니다.

Java 프로그램은 메모리에 직접 액세스할 수 없습니다. 메모리에 대한 모든 작업은 JVM(Java Virtual Machine)을 통해서만 발생합니다.


3. String메모리의 유형

String유형은 많은 양의 데이터를 저장할 수 있으며 이는 단순한 데이터 유형이 아니라 완전한 클래스임을 의미합니다.

개체 String는 텍스트가 저장되는 다른 메모리 블록의 주소를 저장하는 할당된 메모리 블록에 배치됩니다.

변수 는 바이트를 int a차지하고 4값을 저장합니다 1.

변수 는 바이트를 int b차지하고 4값을 저장합니다 10,555. 천 단위 구분 기호로 쉼표를 사용합니다. 그리고 마침표를 소수 구분 기호로 사용합니다.

변수 는 바이트를 double d차지하고 8값을 저장합니다 13.001.

변수 는 바이트를 String str차지하고 텍스트를 포함하는 메모리 블록의 첫 번째 셀 주소인 4값을 저장합니다 .G13

의 텍스트는 String object별도의 메모리 블록에 저장됩니다. 첫 번째 셀의 주소는 str변수에 저장됩니다.


4. 프로그래밍에서 번호 매기기가 0부터 시작하는 이유

사람들은 종종 프로그래머가 거의 항상 0부터 계산을 시작하는 이유를 궁금해합니다. 글쎄, 사실은 0부터 세는 것이 더 편리한 상황이 많다는 것입니다 (물론 에서 세는 것이 더 편리한 상황도 있습니다 1).

가장 간단한 예는 메모리 주소 지정입니다. 변수에 메모리 바이트가 할당되었고 그것이 첫 번째 바이트의 주소임을 4알고 있다면 각 바이트의 주소는 무엇입니까? , , , . 그렇게 간단하게 인덱스 , , , 로 액세스할 수 있는 바이트 그룹이 있습니다 .XX+0X+1X+2X+30123

데이터 블록 내의 상대 주소를 생각할 때 0부터 인덱싱하는 것이 이치에 맞습니다. 이것이 0부터 세는 주된 이유입니다 .