4강. 변수(Variable), 데이터 타입
변수
컴퓨터 언어에서 변수(Variable)란, 값을 저장할 수 있는 메모리상의 공간을 의미한다. 계산을 하기 위해 변수를 사용하지 않고 값을 직접 사용할 수도 있지만, 의미있는 이름의 변수에 저장하여 사용하는 것이 좋다.
변수의 값은 바뀔 수 있으며, 하나의 변수에는 단 하나의 값만 저장할 수 있어 값을 여러번 저장하면 마지막에 저장한 값을 갖게 된다.
변수의 선언
변수를 사용하기 위해서는 먼저 변수를 선언해야 한다. 변수가 선언되면 메모리에 변수의 타입에 알 맞은 크기의 저장공간이 확보되어, 값을 저장할 준비가 되는 것이다.
//변수 선언 및 저장
int number; //정수형(int)을 저장할 수 있는 number 이름의 변수를 선언한다
number = 10 //number 변수에 값 10을 저장한다
//변수 선언과 동시에 초기화
int number = 0; //정수형(int)를 저장할 수 있는 number 변수에 0을 선언과 초기화를 동시에 한다
- 변수 타입은 변수에 담을 값을 종류와 범위를 충분히 고려해서 결정해야 한다.
- 변수를 사용하기 전에는 적절한 값을 저장해주는 것이 필요한데 이것을 변수의 초기화라고 한다
명령규칙
프로그래밍에 개발자가 이름을 지을 수 있는 모든 대상에는 반드시 지켜야할 공통적인 규칙이 있다.
- 대소문자가 구분되며 길이에 제한이 없다.
- 예약어를 사용해서는 안된다 .
- 숫자로 시작해서는 안된다.
- 특수문자는
_
와$
만을 허용한다
java에서 사용하는 예약어는 다음과 같다
abstract | do | if | package | synchronized |
---|---|---|---|---|
boolean | double | implements | private | this |
break | else | import | protected | throw |
byte | enum | instanceof | public | throws |
case | extends | int | return | transient |
catch | false | interface | short | true |
char | final | long | static | try |
class | finally | native | strictfp | void |
continue | float | new | super | volatile |
default | for | null | switch | while |
변수의 타입(변수형)
모든 변수는 변수의 타입(변수형)이 있으며, 변수의 타입에 따라 저장할 수 있는 값의 종류가 범위가 달라진다. 변수를 선언할때 저장하고자 하는 값을 고려하여 가장 알맞은 타입을 선택하면 된다.
변수는 크게 2가지 기본형(Primitive type)과 참조형(Reference type)으로 나눌 수 있다
- 기본형(Primitive type) : boolean, char, byte, short, int, long, float, double 계산을 위해 실제 값을 메모리에 저장한다.
- 참조형(Reference type) : 8개의 기본형을 제외한 모든 타입으로 메모리에 객체의 주소를 저장한다.
기본형(Primitive type)
1 byte | 2 byte | 4 byte | 8 byte | |
---|---|---|---|---|
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
- 논리형: true와 false 중 하나의 값을 가지며, 조건식과 논리적 계산에 사용
- 문자형: 문자를 저장하는데 사용되며, 변수 당 하나의 문자만 저장 가능
- 정수형: 정수의 값을 저장하는 데 사용되며 주로 int와 long이 사용, byte 는 이진데이터를 다루고, short는 C언어와 호환을 위해 주로 사용
- 실수형: 실수 값을 저장하는데 사용
--------------------------------------------------------------------------------------
종류 설명 저장 공간 값의 범위 (최소값~최대값)
======================================================================================
boolean 논리값 1 bit true / false
--------------------------------------------------------------------------------------
byte 부호 있는 정수 8 bits -128 ~ 127
--------------------------------------------------------------------------------------
char 유니코드 문자 16 bits \u0000 ~ \uFFFF
--------------------------------------------------------------------------------------
short 부호 있는 정수 16 bits -32768 ~ 32767
--------------------------------------------------------------------------------------
int 부호 있는 정수 32 bits -2147483648 ~ 2147483647
--------------------------------------------------------------------------------------
long 부호 있는 정수 64 bits -9223372036854775808 ~ 9223372036854775807
--------------------------------------------------------------------------------------
float IEEE 754 실수 32 bits 1.40239846E-45f
~ (표현 가능 양수 범위)
3.40282347E+38f
--------------------------------------------------------------------------------------
double IEEE 754 실수 64 bits 4.94065645841246544E-324
~ (표현 가능 양수 범위)
1.79769313486231570E+308
--------------------------------------------------------------------------------------
참조형(Reference type)
참조형은 메모리에 실제값이 존재하는 위치(메모리 주소) 를 저장하는 모든 변수로 기본형을 제외한 모든 변수이며, 개발자가 언제든지 선언해서 사용할 수 있다.
참조형은 메모리 주소값 혹은 null 을 가질 수 있으며, null 은 어떤 것도 참조하고 있지 않다는 것을 뜻한다. 대표적으로 사용하는 참조형은 문자열을 저장하는 String 이 있다.
//참조형 타입의 저장은 new 키워드를 사용한다
Date date = null;
Date today = new Date();
//문자열을 저장하는 String 타입은 자주 사용하는 참조형으로 특별하게 쌍따옴표를 사용하여 객체를 생성할 수 있다
String schoolName = "대왕중학교";
형변환(casting)
프로그램을 작성하다 보면, 서로 다른 타입의 값으로 연산을 수행해야 하는 경우가 자주 발생한다. 기본형과 참조형 사이에는 형변환이 되지 않으며, 같은 자료형 내에서만 형 변환이 가능하다.
형변환은 변수나 리터럴 앞에 변화한고자 하는 타입을 괄호와 함께 붙여준다