[Java]변수란?
변수란 단 하나의 값을 저장할 수 있는 메모리 공간을 말한다. 자바에서 변수를 선언할 때에는 아래와 같이 사용한다.
변수타입 변수이름;
int age;
string name;
변수 타입 : 변수에 저장될 값이 어떤 타입 인지를 저장하는 것이다. 저장하고자 하는 값의 종류에 맞게 변수의 타입을 선택해서 적어주어야 한다.
변수를 선언하면, 메모리의 빈 공간에 변수 타입에 맞는 크기의 저장 공간이 확보되고, 그 저장 공간을 사용할 때 변수 이름으로 불러와서 사용할 수 있게 된다.
변수 초기화 : 변수를 사용하기 전에 처음으로 값을 저장하는 것 (메모리는 여러 프로그램이 공유하는 자원이기 때문에 다른 프로그램에 의해 저장된 알 수 없는 값이 있을 수 있기 때문에 변수를 사용하기 전에 반드시 초기화를 해주어야 한다.)
int age = 32;
변수의 종류에 따라 초기화를 생략할 수 있는 경우도 있지만, 변수는 사용되기 전에 적절한 값으로 초기화 하는 게 좋다!!
변수 명명 규칙
1. 대소문자가 구분되며 길이에 제한이 없다.
2. 예약어를 사용해서는 안된다.
3. 숫자로 시작해서는 안된다.
4 .특수문자는 _와$만 허용된다.
프로그래밍에서 사용되는 모든 이름을 식별자라고 하며, 식별자는 같은 영역 내에서 서로 구분 될 수 있어야 한다. 대부분의 변수(식별자)는 위의 규칙을 따른다.
변수의 타입
변수 타입에는 크게 기본형과 참조형이 있다.
참조형 : 어떤 값이 저장되어 있는 주소를 값으로 갖는다.
참조형 변수를 선언할 때는 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조 변수의 타입이 된다.
참조 변수는 null또는 객체의 주소를 값으로 가지며 참조 변수의 초기화는 아래와 같이 한다.
Date today = new Date();
객체를 생성하는 연산자 new 는 객체의 주소를 반환한다. 이 주소가 today에 저장되는 것이다.
기본형 : 실제 값을 변수에 저장한다.
boolean(논리형), char(문자형), int(정수형), float, double(실수형)등이 있다.
- 논리형- booleanboolean 형은 사실 1bit 만으로도 충분하지만 자바에서 다루는 데이터의 최소 기준이 byte 이기 때문에 1byte를 사용한다.
boolean형 변수에는 true, false 중 하나를 지정할 수 있으며 기본값은 false이다. - 문자형 - charchar의 크기는 2 byte이다.
char 타입의 변수는 단 하나의 문자 만을 저장할 수 있다. 이때 코드만 봤을 때는 변수가 문자가 저장되는 것 처럼 보이지만 사실 문자의 유니코드가 저장되는 것이다. - 정수형 - byte, short, int, long
정수형에는 총 4가지의 자료형이 있으며 각 자료형이 저장할 수 있는 값의 범위가 다르다.
보통 byte나 short 보다는 int를 사용하는 게 좋다.
byte나 short는 메모리를 절약할 수 있겠지만 저장할 수 있는 범위가 작기 때문에 연산 시에 잘못된 결과가 나올 수 있다.
→ 정수형 변수를 선언할 때에는 int 타입으로 하고 int의 범위(약 20억)을 넘어서는 수를 다뤄야 할 때에는 long을 사용하자!- 정수형의 오버플로우
정수형의 연산 과정에서 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것을 정수형의 오버플로우라고 한다.
예시) 4bit 2 진수의 최대값인 1111에 1을 더하는 연산을 했을 때, 우리가 원하는 값은 10000 이지만 4bit에서 출력할 수 있는 값은 0000 이 된다.
- 정수형의 오버플로우
- 실수형 - float, double
실수형 값을 저장할 때, float 타입이 아닌 double 타입의 변수를 사용하는 경우 보다 높은 정밀도를 가질 수 있다. → 연산 속도의 향상이나 메모리를 절약하려면 float를 사용하고 더 큰 값의 범위나 높은 정밀도를 필요로 한다면 double을 사용한다.
실수형의 저장 형식
정수형인 int와 실수형인 float는 둘 다 4byte의 저장 공간을 갖고 있다. 실수형은 정수형과 똑같은 4byte로 더 큰 숫자를 저장하는데 그 이유는 실수형의 저장 방식에 있다.
정수형인 int 타입은 저장할 때 부호와 값 두 부분으로 나뉘어져 있지만, 실수형은 부호, 지수, 가수 세 가지를 저장하게 되어 있다. 실수형은 저장되어 있는 3가지 데이터로 (+/-)M * 2^E 방식으로 수를 만들기 때문에 더 큰 숫자를 저장할 수 있다.
상수와 리터럴
상수 : 변수와 마찬가지로 값을 저장할 수 있는 공간이지만 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없다.
상수를 선언하는 방법은 변수와 같지만 앞에 final 키워드를 적어주면 된다. 상수는 무조건 선언과 동시에 초기화 해주어야 한다.
final int age = 32;
리터럴 : 데이터 그 자체를 말한다.
형변환
변수 또는 상수의 타입을 다른 타입으로 변환하는 것이다.
(타입)피연산자
double d = 84.3;
int score = (int)d;
형변환을 할 때, 큰 타입에서 작은 타입으로 변환하게 되면 크기의 차이만큼 값이 잘려나가기 때문에 값 손실이 발생할 수 있다. 그러므로 형변환을 할 때는 항상 작은 타입에서 큰 타입으로 변환해주어야 한다.