변수(varible)와 상수(Constant)

변수는 데이터를 저장하기 위한 공간이다. 변수는 특정한 데이터 타입에 따라 메모리 공간을 할당받게 되고, 데이터 값을 저장하거나 변경할 수 있다.
변수를 선언할 때는 데이터 타입과 변수 이름이 필요하다. 데이터 타입은 변수가 저장할 수 있는 값의 종류와 메모리 크기를 결정한다.

변수의 이름을 지을 때는 아래와 같은 규칙이 있다.

  1. 변수명은 숫자로 시작할 수 없다.
  2. _&이외의 특수 문자는 사용할 수 없다.
  3. int, class, return 등 자바의 키워드는 변수명으로 사용할 수 없다.
int a;
String b;

변수는 선언과 함께 초기화할 수 있고, 선언 후에도 별도로 초기화할 수도 있다. 또한 형변환(casting)을 통해 변수의 데이터 타입을 다른 타입으로 변환할 수 있다.

// 변수 선언
int number = 10;

// 형변환
double doubleNumber = (double) number;

상수(constant)는 한 번 값이 할당되면 그 값을 변경할 수 없는 변수를 말한다. 따라서 상수는 프로그램 실행 중에 일정하게 유지되어야 하는 값들에 사용된다.

상수를 선언하기 위해서는 final 키워드를 사용한다. final 키워드는 변수 앞에 위치시켜 그 변수가 상수임을 나타낸다.

final double PI = 3.14159;

상수를 사용하는 이유는 같은 값을 여러 곳에서 사용할 때 상수를 사용하면 한 곳에서만 값을 변경해도 전체적으로 적용할 수 있고, 실수로 값이 변경되는 것을 방지할 수 있다.

자료형의 종류

자바의 자료형은 크게 두 가지 범주로 나눌 수 있다. 기본형(Primitive Types)와 참조형(Reference Types)가 있다. 기본형은 실제 값을 저장하며, 메모리 사용이 효율적이다.

정수형으로는 byte, short, int, long, 부동소수점형으로는 float, double, 그 외에 char, boolean가 있다.

참조형은 메모리에 저장된 객체의 주소를 저장한다. 기본형과 달리 객체의 실제 데이터는 다른 메모리 영역에 저장되며, 변수는 이 데이터의 참조(주소)를 가지고 있다.

참조형 변수들은 기본값으로 null을 가질 수 있으며, null은 아무런 객체도 참조하지 않고 있음을 의미한다. 참조형은 복잡한 데이터 구조를 다룰 때 사용되며, 클래스 및 인터페이스를 통해 다양한 타입의 객체를 만들 수 있다.

박스형 타입

박스형 타입 또는 래퍼 클래스(Wrapper Classes)는 위에서 말하는 기본형 데이터를 객체로 포장하는 클래스들을 말한다. 객체가 필요한 컬렉션 프레임워크나 제네릭 클래스 등에서 사용할 수 있다.

byte의 래퍼 클래스: Byte
short의 래퍼 클래스: Short
int의 래퍼 클래스: Integer
long의 래퍼 클래스: Long
float의 래퍼 클래스: Float
double의 래퍼 클래스: Double
char의 래퍼 클래스: Character
boolean의 래퍼 클래스: Boolean

그렇다면 래퍼(Wrapper) 클래스와 기본형(Primitive)데이터 타입이 별도로 존재하는 이유는 무엇일까 ?

형 변환(Type Casting)

자바에서 한 데이터 타입의 값을 다른 데이터 타입으로 변환하는 과정을 형 변환이다. 형변환은 기본적으로 두 가지 유형으로 뷴류된다. 자동 형변환(묵시적 형변환)과 명시적 형변환이 있다.

  • 자동 형변환(Implicit Casting)
    자동 형변환은 프로그램에서 값의 타입을 별도의 명령 없이 자동으로 변환하는 것을 말한다. 보통 더 작은 데이터 타입에서 더 큰 데이터 타입으로 변환할 때 발생한다.

  • 명시적 형변환(Explicit Casting)
    명시적 형변환은 프로그래머가 코드에 명시적으로 데이터 타입을 변환하는 것을 말한다.