변수: 데이터를 저장하는 메모리 공간 이름(symbol)자료형: 변수의 데이터 크기와 종류를 상징함 (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

심볼 테이블은 Hashtable 형태로 구현된 변수, 함수, 클래스 등의 식별자(identifier)를 관리하는 테이블이다.
심볼 테이블의 동작
int a;를 선언하면 메모리 공간의 특정 주소에 a라는 기억공간(변수)이 생성되고, 그 메모리 주소가 심볼 테이블에 저장된다. (따라서, 선언하지 않는다면 symbol table에서 해당 변수의 주소를 찾을 수 없기 때문에 error가 발생)a = 10;는 a를 key로 하여 메모리 주소를 symbol table에서 찾아내고, 10을 변수 a에 할당한다.