변수
변수란?
프로그래밍에서의 변수는 값을 저장할 수 있는 메모리상의 공간을 의미한다.
"변수란, 단 하나의 값을 저장할 수 있는 메모리 공간"
변수의 선언과 초기화
int age; // age 라는 이름의 변수 선언
변수타입
은 변수에 저장될 값이 어떤 '타입'인지를 저장하는 것변수이름
은 메모리 공간에 이름을 붙여주는 것
📌 변수의 초기화
메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 '알 수 없는 값(쓰레기 값)'이 남아있을 수 있기 때문에 반드시 초기화를 해주어야 한다.
"변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것"
예시
class Variable {
publci static void main(String[] args) {
int year = 0;
int age = 14;
System.out.println(year); // 0
System.out.println(age); // 14
year = age + 2000;
age = age + 1;
System.out.println(year); // 2014
System.out.println(age); // 15
}
}
변수의 명명규칙
프로그래밍에서 사용하느 모든 이름을 식별자(identifier)라고 하며, 식별자는 같은 영역 내에서 서로 구분될 수 있어야 한다.
식별자를 만드는 규칙
- 대소문자가 구분되며 길이에 제한이 없다.
- True와 true는 다름
- 예약어를 사용해서는 안 된다.
- true는 예약어라서 사용할 수 없지만 True는 가능
- 숫자로 시작해서는 안 된다.
- 특수문자는
'_'
,'$'
만 허용
자바 프로그래머들에게 권장되는 규칙
- 클래스 이름의 첫 글자는 항상 대문자로 한다.
- 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- 상수의 이름은 모두 대문자로 한다. 여러 단어는
'_'
로 구분한다.
변수의 타입
자료형은 크게 기본형과 참조형 두 가지로 나눌 수 있다.기본형 변수
는 실제 값을 저장하고 참조형 변수
는 어떤 값이 저장되어 있는 메모리 주소를 값으로 갖는다.
기본형(primitive type)
기본형에는 크게 논리형, 문자형, 정수형, 실수형 4가지로 구분된다.
기본형의 크기와 범위
자료형|저장 가능한 값의 범위|크기 | 접미사
--|--|--|--
boolan|false, true|8bit / 1byte | none
char|'\u0000' ~ '\ufff' (0 ~ 216-1)|16bit / 2byte | none
byte|-128 ~ 127 (-27 ~ 27-1)|8bit / 1byte | none
short|-32,768 ~ 32,767(-215 ~ 215-1)|16bit / 2byte | none
int|-2,147,483,648 ~ 2,147,483,647(-231 ~ 231-1)|32bit / 4byte | none
long|-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (-263 ~ 263-1)|64bit / 8byte | L
flot|1.4E-45 ~ 3.4E38(1.4 * 10-45 ~ 3.4 * 1038)|32bit / 4byte | f, F
double|4.9E-324 ~ 1.8E308(4.9 * 10-324 ~ 1.8 * 10308)|64bit / 8byte | d, D
int
와 double
은 접미사 생략 가능하다.
상수와 리터럴(constant & literal)
상수
- 변수와 마찬가지로 값을 저장할 수 있는 공간이지만, 한 번 저장하면 값을 변경할 수 없다.
- 변수 타입 앞에
final
을 붙인다. - 선언과 동시에 초기화를 해주어야 한다.
리터럴
- 변수에 넣는 값을 의미한다.
int year = 2000; // 변수 final MAX_VALUE = 500; // 상수 // 2000, 500은 리터럴
형변환
형변환(castring)이란?
변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 형변환이라고 한다.
형변환 방법
(타입) 피연산자
여기에 사용되는 괄호는 캐스트 연산자 또는 형변환 연산자라고 한다.
double d = 85.4;
int score = (int)d; // 85가 저장됨
정수형과 실수형 간의 형변환
정수형을 실수형으로 변환
- 실수의 정밀도 차이에 의한 오차가 발생할 수 있다.
실수형을 정수형으로 변환
- 실수형의 소수점이하 값을 버린다.
자동 형변환
서로 다은 타입간의 대입이나 연산을 할 때, 캐스팅하는 것이 원칙이지만 편의상 캐스팅을 생략할 수 있다.
float f = 1234; // f = (floag) 1234와 같음
int i = 3;
double d = 1.0 + i; // double d = 1.0 + (double) i; 에서 캐스팅이 생략됨
표현범위가 좁은 타입에서 넓은 타입으로 캐스팅하는 경우에는 값 손실이 없으므로 표현 범위가 더 넓은 쪽으로 형변환된다.
📍 요약
- boolean을 제외한 나머지 7개의 기본형은 서로 형변환이 가능하다.
- 기본형과 참조형은 서로 형변환할 수 없다.
- 서로 다른 타입의 변수간의 연산은 형변환을 하는 것이 원칙이지만, 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략할 수 없다.
'기술독서 > 자바의 정석' 카테고리의 다른 글
[자바의 정석] 6장 - 객체지향 프로그래밍 Ⅰ (0) | 2022.02.14 |
---|---|
[자바의 정석] 5장 배열 (0) | 2022.02.09 |
[자바의 정석] 4장 조건문과 반복문 (0) | 2022.02.09 |
[자바의 정석] 3장 연산자 (Operator) (0) | 2022.02.09 |
[자바의 정석] 1장 자바를 시작하기 전에 (0) | 2022.02.08 |