변수
변수란?
•
단 하나의 값을 저장할 수 있는 메모리 공간이다.
변수의 선언
•
어떤 타입의 데이터를 저장할 것인지 + 변수의 이름이 무엇인지 결정
Default view
Search
•
변수는 선언된 블럭 내에서만 사용이 가능하다.
변수의 사용
변수의 저장
•
대입 연산자 ( = ) 을 사용하여 변수에 값을 저장
◦
변수를 선언하고 처음 저장하는 값 : 초기값
◦
변수에 초기값을 저장하는 행위 : 초기화
◦
변수에 직접 입력된 값 : 리터럴 ( 정수, 실수, 문자(열), 논리 )
char a = 'A'
// a 라는 변수를 선언
// 'A' 라는 문자 리터럴 값으로 초기화
// 'A' 는 변수 a 의 초기값
Java
복사
변수값 읽기
•
초기화 되지 않은 변수는 값을 읽을 수 없다→ 컴파일 에러 발생
변수의 사용 범위
•
변수는 선언된 중괄호 안에서만 사용이 가능하다.
•
메소드 내에서 선언된 변수는 메소드 종료와 함께 메모리에서 없어진다.
데이터 타입
•
데이터 타입에 따라 저장할 수 있는 값의 종류와 크기가 다르다.
기본 타입
•
리터럴을 직접 저장하는 타입
정수 타입
•
byte
◦
1 바이트 ( 8 )
◦
1 0 0 0 0 0 0 0 ~ 0 1 1 1 1 1 1 1
◦
-128 ~ 127
◦
127 + 1 = -128
•
char
◦
2 바이트 ( 16 )
◦
유니코드
◦
0 ~ 2^16-1
◦
공백으로 초기화
char a = ' '
Java
복사
•
short
◦
2 바이트 ( 16 )
◦
-2^15 ~ 2^15-1
•
int
◦
4 바이트 ( 32 )
◦
-2^31 ~ 2^31-1
◦
연산을 하는 기본 타입
•
long
◦
8 바이트 ( 64 )
◦
-2^63 ~ 2^63-1
◦
초기화 시 정수 뒤에 l , L 을 붙인다.
▪
long number = 10L;
실수 타입
•
부동 소수점
◦
1.2345 = 0.12345 * 10^1
◦
0.12345 : 지수
◦
10^1 : 가수
•
float
◦
4 바이트 ( 32 )
◦
부호 1 + 지수 8 + 가수 23
◦
초기화 시 실수 뒤에 f, F 를 붙인다.
•
double
◦
8 바이트 ( 64 )
◦
부호 1 + 지수 11 + 가수 52
◦
실수 리터럴의 기본 타입
•
double이 더 정밀하다
논리 타입
•
boolean
◦
1 바이트 ( 8 )
◦
true
◦
false
타입 변환
•
데이터 타입을 다른 타입으로 변환
자동 타입 변환
•
작은 크기의 데이터 타입이 큰 크기의 데이터 타입으로 자동 변환
byte < short < int < long < float < double
Java
복사
•
float 은 long 보다 메모리 크기는 작지만 표현 가능한 값의 크기가 더 크다.
•
char 는 byte 보다 메모리 크기는 크지만 음수는 갖을 수 없다.
byte byteValue = 1;
int intValue = byteValue;
intValue = 2;
byteValue = intValue;
intValue = 255;
byteValue = intValue;
Java
복사
강제 타입 변환
•
큰 크기의 데이터 타입을 작은 크기의 데이터 타입으로 강제 변환
•
캐스팅
•
캐스팅 연산자 ( )
intValue = 2;
byteValue = (byte)intValue;
intValue = 255;
byteValue = (byte)intValue;
Java
복사
•
실수 타입을 정수 타입으로 캐스팅 시, 소수점 이하는 버려짐
•
변환 후의 데이터 타입의 최소값과 최대값을 벗어나는지 반드시 검사해야함
연산식에서의 자동 타입 변환
•
int 타입보다 작은 타입의 피연산자는 int 로 타입 변환
◦
피연산자를 4 바이트 단위로 저장하기 때문에
•
두 피연산자 중 더 큰 타입으로 변환
•
연산의 결과도 더 큰 타입으로 저장
int intVal = 10;
double doubleVal = 10.0;
double result = intVal + doubleVal;
Java
복사
•
큰 타입을 캐스팅하여 작은 타입으로 연산 가능
◦
데이터 손실 등 고려
int result = intVal + (int)doubleVal;
Java
복사