Variable(변수)
1. 변수란
- 메모리(RAM)에 값을 기록하기 위한 공간
-
변수 사용시 가독성이 좋아지며 재사용성 증가로 인한 코드량 감소
-> 유지보수가 용이하다
2. 변수 선언
자료형 변수명;
int num;
위와 같이 앞에 자료형 뒤에 변수명을 입력하여 선언한다.
이때
int num = 1;
위와같이 변수 선언과 동시에 값(literal)을 대입 처리하는 것을 초기화라고 한다. (지역변수는 반드시 초기화를 진행해야 함)
변수 명명시 지켜야 할 규칙들이 있는데 아래와 같다
- 대소문자가 구분되며 길이 제한이 없다.
- 예약어를 사용하면 안 된다 (ex. true, final, String 등)
- 숫자로 시작하면 안된다 (ex. age1은 가능하지만 1age는 안됨)
- 특수문자는
_
와$
만을 허용한다 (ex. shee@p 는 불가능하지만 $sheep 는 가능)
3. 자료형(Type)
타입 | 표현식 | 용량 |
---|---|---|
논리 | boolean | 1byte |
문자 | char | 2byte |
문자열 | String | 참조형 |
정수형 | byte short int long |
1byte 2byte 4byte 8byte |
실수형 | float double |
4byte 8byte |
4. 상수
상수란 수학에서는 변하지 않는 값을 의미하고
JAVA 에서는 한 번만 저장(기록)할 수 있는 메모리를 의미한다
final int NUM;
위와같이 final
로 선언하며 변수명을 모두 대문자로 표시해주는 것이 관례다
상수변수 이름이 여러 개의 단어로 구성될 경우에는 _
를 이용한다(ex. MAX_NUM)
5. 형변환(Type Casting)
데이터의 자료형을 다른 자료형으로 바꾸는 것(boolean 제외)
컴퓨터에서 데이터는 서로 같은 자료형일 때 연산/대입이 가능하므로 이러한 원칙이 지켜지지 않은 경우에 형 변환이 필요하다
형변환 하고자 하는 값과 자료형의 표현 범위 차이에 따라 형변환 방법이 나뉘는데 크게 묵시적(자동) 형변환 , 명시적(강제) 형변환이 있다
-
묵시적(자동) 형변환 (Promotion)
- 컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환하는 것
- 메모리 할당 크기가 작은 자료형 데이터를 메모리 할당 크기가 큰 자료형 변수에 대입하는 경우 자동으로 형변환이 발생한다
예시)
int a = 12; double d = 3.3; double result = a + d; //int 자료형이 자동 형변환되어 double 자료형으로 변환됨
- 자동 형변환의 예외
- byte와 short 자료형 값의 계산 결과는 무조건 int로 처리한다.
- char 자료형은 메모리 할당 크기가 2byte이고 값의 표현범위가 0~65,535이며 음수를 저장하지 않 는다. 그러므로 음수가 저장될 수 있는 정수의 byte 자료형이나 short 자료형은 char타입으로 자 동 형변환할 수 없다. 자바에서 char 자료형과 형변환이 가능한 정수 자료형은 int 이다.
-
명시적(강제) 형변환 (Casting)
- 값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환한다
- 강제 형변환 시 데이터 손실이 발생할 수 있다 => 데이터의 변형, 손실을 감수하고 강제 변환
(바꾸고자 원하는 자료형)데이터 (바꾸고자 원하는 자료형)변수
- 위 형태대로 선언하여 사용한다
- 같은 자료형 데이터끼리 연산하더라도 결과값이 해당 자료형 값의 범위를 초과하는 경우가 발생할 경 우, 결과값에 대한 자료형으로 연산 값들의 자료형을 변경해야 하는 경우에도 형변환을 직접 명시한다
데이터 손실 예시)
6. 변수와 메모리 구조
RAM 구조 | 내용 |
---|---|
Static | static 예약어로 선정된 필드 메소드가 저장되는 공간 클래스 변수 등 |
HEAP | new 연산자에 의해 동적으로 할당하고 저장되는 공간 객체, 배열 등 |
STACK | 메소드를 호출하면 자동생성 메소드가 끝나면 자동소멸 지역변수, 매개변수, 메소드 호출 스택 등 |
댓글남기기