Programming/Java \ Spring

🔥자바스터디🔥 자바의 정석 CH2 변수의 선언과 초기화, 데이터 타입, 형변환

 

 

1. 변수의 정의

 

단 하나의 값을 저장할 수 있는 메모리 공간

- 하나의 변수에 하나의 값만 저장할 수 있으므로, 새로운 값을 저장하면 기존의 값은 사라진다

 

2. 변수의 선언

자바스크립트와 달리 자바는 변수를 사용하려면 먼저 변수를 선언해야한다.

(변수의 데이터 타입과 변수 이름으로 구성하여 선언한다.)

 

변수의 데이터타입은 기본형(순수 값)과 참조형(객체의 주소)으로 구분되어지며, 참조형은 객체(클래스, 배열, 인터페이스, 맵 등)를 의미한다고 보면된다.

변수의 이름은 하나의 데이터가 저장된 메모리 공간에 이름을 붙여줌으로써 해당 메모리의 위치값을 이용하지 않고 변수명으로 해당위치에 데이터를 저장하고 읽어올 수 있다. 

따라서, 변수명은 같은 이름으로 여러개가 존재해서는 안된다. (서로 구별할수 있어야하기 때문)

 

2. 변수의 초기화

 

메모리 공간은 여러프로그램이 공유하는 자원이기 때문에 사용전에 대입 연산자 '='를 사용하여 초기화한 후 사용해야한다.

(알수 없는 값이 해당 메모리 공간에 남아있을수 있기 때문이다.)

 

int i = 0;

String memory = null;

Date today = new Date();

 

이와같이 기본값으로 초기화하는 방법도 있으며, 보통은 변수를 사용하기 전에 처음으로 값을 저장하는 것을 초기화라한다.

 

상수 : 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없다.

리터럴 : 그 자체로 값을 의미하는 것

 

final int MAX_SPEED = 10;

 

상수는 변수타입 앞에 'final'을 붙여주고, 선언과 동시에 초기화를 진행하고 그 후 값을 변경할수 없다.

상수의 이름은 모두 대문자로 하는 것이 관례이며, 여러단어로 이루어져 있는 경우 '_'로 구분한다.

상수는 리터럴에 '의미있는 이름'을 붙여서 코드의 이해와 수정을 쉽게 한다.

 

3. 변수의 형변환

 

저장될 변수의 타입과 저장할 타입이 다르면 에러가 발생한다. 

그러나 타입이 달라도 저장범위가 넓은 타입에 좁은 타입의 값을 저장하는 것은 허용된다.

 

int i = 'A';           // ok 유니코드 65는 int 범위 안에 속한다.

long l = 123;       // ok

float f = 3.14       // fail 실수형의 기본형은 double이며, double형이 float보다 범위가 넓다.

 

이렇게 허용하는 경우 외에는 형변환을 해주어야한다.

 

(타입) 피연산자

double d = 52.4;

int score = (int)d;

 

단순히 변수의 데이터값을 읽어 지정된 타입으로 형변환을 해주기 때문에 피연산자의 값에는 영향을 주지 않는다.

형변환시에는 값의 범위에 따른 데이터타입의 범위와 일치하지 않을경우 값손실, 오버플로우, 언더플로우 등이 발생할수 있다.

 

1. boolean을 제외한 나머지 7개의 기본형은 서로 형변환이 가능하다.

2. 기본형과 참조형은 서로 형변환할 수 없다.

3. 서로 다른 타입의 변수간의 연산은 형변환을 하는 것이 원칙이나, 값의 범위가 작은 타입에서 큰타입으로의 형변환은 생략 가능하다.