변수, 자료형, 할당

Soobin Kim·2024년 3월 23일

Java

목록 보기
3/47

용어 정리

  • 변수: 데이터를 저장하는 메모리 공간 이름(symbol)
    • 멤버 변수(instance variable)
    • 클래스 변수(static variable)
    • 지역 변수(local variable)
    • 매개 변수(parameter, argument)

  • 자료형: 변수의 데이터 크기와 종류를 상징함 (ex: int는 정수형의 4byte 크기의 자료형을 나타냄)

    • 문자형은 수치 자료형:

         char c = 'A';
         System.out.println("c = " + c); // c = A
         
         System.out.println("c + 1 = " + c + 1); // c = B
         
         int cToInt = c;
         System.out.println("cToInt = " + cToInt); // cToInt = 65
         
         char intToChar = (char)cToInt;
         System.out.println("intToChar = " + intToChar); // intToChar = A
         
         char upper = 'A';
         char lower = (char)(upper + 32); // upper는 2byte의 char, 32는 4byte의 int 
                                          // 자료형이므로 char 자료형 lower에 넣기 위해 형변환 필요
         System.out.println("lower = " + lower); // lower = a


  • 할당: 변수에 지정된 데이터 타입에 맞게 데이터를 저장(대입)하는 행위

변수와 자료형

int a;
  • 변수 선언
  • 위처럼 자료형과 변수명을 선언함으로써 변수(기억공간)가 메모리에 할당된다.
    • 예: 정수 한 개를 저장하기 위해서 변수를 선언해야 한다.

초기화

int a; // 변수 선언 상태. 초기화X
System.out.println(a); // -> java: variable a might not have been initialized

int b = 10; // 선언과 동시에 초기화됨.
System.out.println(b); // 10 
  • 변수를 만들고 난 후 연산을 하기 전 값을 저장하는 행위.
  • 초기화를 하지 않으면 쓰레기 값이 들어가 연산을 할 수 없다.
  • 자료형이 담을 수 있는 데이터 크기를 담아야 하며, 그렇지 않으면 overflow가 발생한다.

메모리 주소(memory address)

  • 메모리 주소(memory address)란, 컴퓨터 메모리 내 데이터가 저장되는 위치를 가리키는 숫자(16진수)다.
  • 메모리 주소를 통해 프로그램은 특정 데이터의 위치를 정확하게 알 수 있으며, 이를 통해 데이터를 읽거나 쓸 수 있다.
  • 식별자는 메모리 상의 고유한 주소와 매핑되어, 해당 주소에 저장된 값을 식별하고 접근할 수 있다.

Symbol table

  • 심볼 테이블은 Hashtable 형태로 구현된 변수, 함수, 클래스 등의 식별자(identifier)를 관리하는 테이블이다.

  • 심볼 테이블의 동작

    1. 식별자가 메모리에 할당될 때, 식별자의 이름이 key로, 그 메모리 주소가 value로 심볼 테이블에 저장된다. 예를 들어 int a;를 선언하면 메모리 공간의 특정 주소에 a라는 기억공간(변수)이 생성되고, 그 메모리 주소가 심볼 테이블에 저장된다. (따라서, 선언하지 않는다면 symbol table에서 해당 변수의 주소를 찾을 수 없기 때문에 error가 발생)
    2. 변수에 값을 할당할 때, 심볼 테이블을 활용하여 식별자를 메모리 주소로 찾아가고 해당 메모리 주소에 값을 할당한다. 예를 들어 a = 10;a를 key로 하여 메모리 주소를 symbol table에서 찾아내고, 10을 변수 a에 할당한다.

0개의 댓글