본문 바로가기

Java/기초

[Java] 자바 변수(Variable)

1.  변수(Variable)와 상수

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

 

int age;//age라는 이름의 변수를 선언

int   - 변수타입 : 변수에 저장될 값이 어떤 '타입(type)'인지를 지정하는 것이다.

age  - 변수이름 : 값을 저장할 수 있는 메모리 공간

변수를 선언하면, 메모리의 빈 공간에 '변수타입'에 알맞은 크기의 저장공간이 확보되고, 앞으로 이 저장공간은 '변수이름'을 통해 사용할 수 있게 된다.

 

변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것

지역변수는 사용되기 전에 초기화를 반드시 해야 하지만 클래스변수와 인스턴스변수는 초기화를 생략할 수 있다. 

 

 

변수의 명명규칙

1) 대소문자가 구분되며 길이에 제한이 없다.

- True와 true는 서로 다른 것으로 간주된다.

2) 예약어를 사용해서는 안 된다.

- true는 예약어라서 사용할 수는 없지만, True는 가능하다.

목록 예약어
기본 데이터 타입 boolean, byte, char, short, int, long, double
접근 지정자 public, protected, private
클래스 관련 class, abstract, interface, extends, implements, enum
메서드 관련 void, return
제어문 관련 if, else, switch, case, default, for, do, while, break, continue
논리 리터럴 true, false
예외 처리 관련 try, catch, finally, throw, throws
기타 transient, volatile, package, import, synchronized, native, final, static, strictfp, assert

 

자바에서 권장하는 규칙들

1) 클래스 이름의 첫 글자는 항상 대문자로 한다.

- 변수와 메서드 이름의 첫 글자는 항상 소문자로 한다.

2) 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.

- ex. lastIndexOf, StringBuffer

3) 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.

- ex. PI, MAX_NUMBER

 

※ 변수의 이름은 짧을수록 좋지만, 약간 길더라도 용도를 알기 쉽게 '의미있는 이름'으로 하는 것이 바람직하다.

ex. 행정표준용어사전

※ 상수(constant)와 리터럴(literal)

- 상수 : 변하지 않는 수

- 리터럴 : 변하지 않는 데이터

ex. int a = 1;

//1과 같이 변하지 않는 데이터(boolean, char, double, long, int, etc...)를 리터럴(literal)

//int 앞에 final을 붙일시 a는 상수가 된다.

 

2.  변수(Variable)의 타입

우리가 주로 사용하는 값(data)의 종류(type)은 크게 '문자와 숫자'로 나눌 수 있으며 숫자는 다시 '정수와 실수'로 나눌 수 있다.

 

값(data)

  ├ 문자 : A, 1, ABC

  └ 숫자

         ├ 정수 : 123, 0, -100

         └ 실수 : 3.14. -3.0 x 103

 

기본형(primitive type)

- 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 계산을 위한 실제 값을 저장한다. 모두 8개

참조형(reference type)

- 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입

 

클래스이름 변수이름; //변수의 타입이 클래스 이름인 것들은 모두 참조변수이다.

 

2.1 기본형(primitive type)

기본형의 종류

분류 타입
논리형 boolean
true와 fse 중 하나를 값으로 갖으며, 조건식과 논리적 계산에 사용된다.
문자형 char
문자를 저장하는데 사용되며, 변수 당 하나의 문자만 저장할 수 있다.
정수형 byte, short, int,  long
정수 값을 저장하는 데 사용된다. 주로 사용되는 것은 int와 long이다.
byte는 이진 데이터를 다루는데 주로 사용되며, short는 C언어와의 호환을 위해서 추가하였다.
실수형 float, double
실수를 저장하는데 사용되며, 주로 double이 사용된다.

 

기본형의 종류와 크기

                       크기
종류
1 byte 2 byte 4 byte 8 byte
논리형 boolean      
문자형   char    
정수형 byte short int long
실수형     float double

 

8가지 기본형(primitive type)과 저장 가능한 값의 범위

 

자료형 저장 가능한 값의 범위 크기
bit byte
boolean false, true 8 1
char '\u0000'~'\uffff' (0-216-1, 0 ~ 65535) 16 2
byte -128 ~ 127 ( -27 ~ 27-1) 8 1
short -32,768 ~ 32,767 (-215 ~ 215 -1) 16 2
int -2,147,483,648 ~ 2,147,483,647 (-231 ~ 231 -1, 약 20억) 32 4
long -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 ( -263 ~ 263 -1) 64 8
float 1.4E-56 ~ 3.4E38 32 4
double 4.9E -324 ~ 1.8E308 64 8

 

2.2 상수와 리터럴(constant & literal)

'상수(constant)'는 변수와 마찬가지로 '값을 저장할 수 있는 공간'이지만, 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없다.

상수를 선언하는 방법은 변수와 동일하며, 단지 변수의 타입 앞에 키워드 'final'을 붙여주기만 하면 된다.

ex. final int MAX_SPEED = 10;// 상수 MAX_SPEED를 선언 & 초기화

 

final int MAX_SPEED;           //에러. 상수는 선언과 동시에 초기화해야함

final int MAX_VALUE = 100;  //OK. 선언과 동시에 초기화했음

MAX_SPEED = 200;             //에러. 상수의 값은 변경될 수 없음

 

리터럴(literal)

원래 12, 'A'와 같은 값들이 '상수'인데, 프로그래밍에서는 상수를 '값을 한번 저장하면 변경할  수 없는 저장공간'으로 정의하였기 때문에 이와 구분하기 위해 상수를 다른 이름으로 불러야만 했다. 그래서 상수 대신 리터럴이라는 용어를 사용한다.

변수(variable)  : 하나의 값을 저장하기 위한 공간

상수(constant) : 값을 한번만 저장할 수 있는 공간

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

 

리터럴의 타입과 접미사

종류 리터럴 접미사
논리형 false, true 없음
정수형 123, 0b0101, 077, 0xFF, 100L L
실수형 3.14, 3.0e8, 1.4f, 0x1.0p-1 f, d
문자형 'A', '1', '\n' 없음
문자열 "ABC", "123" 없음

 

실수형 리터럴의 예

자료형 리터럴 다른 형태의 동등한 표형
double 10. 10.0
double .10 0.10
float 10f 10.0f
float 3.14e3f 3140.0f
double le1 10.0
double le-3 0.001