[Java] 변수와 자료형(Variable & Data Type)

u_yonu·2026년 1월 27일

Java

목록 보기
2/18
post-thumbnail

변수(Variable)

  • 컴퓨터 메모리의 데이터 저장소로 데이터에 이름을 부여하여 해당 데이터를 관리함.
  • 물리적 관점 : 컴퓨터(RAM)는 0x7ffebc11과 같은 16진수 주소로 데이터를 관리하는데, 인간이 이 숫자를 모두 외울 수 없으므로, 변수는 이름을 붙여 해당 주소를 가리키게 만든 것
  • 자료형에 따라 값 또는 참조 값을 저장
  • '='을 통해서 CPU에게 연산 작업을 의뢰함

Cf) 컴퓨터 코딩에서 "==" 같다이며, "="는 할당하다라고 이해하면 쉬움.

변수의 작명규칙

1. 대/소문자 구분(Case Sensitivity)

  • 자바에서 Score와 score는 완전히 다른 변수임을 기억해야한다.
  • 컴퓨터 내부적으로 'S'(아스키 코드 83)와 's'(아스키코드 115)는 전혀 다른 비트 패턴이기 때문

2. 숫자로 시작 불가

  • 컴파일러가 코드를 해석(Parsing)할 때, 숫자로 시작하면 이를 '숫자 리터럴(값)'로 인식하려 합니다. 1st라고 쓰면 컴파일러는 1이라는 숫자 뒤에 이상한 문자가 붙은 것으로 간주하여 에러발생

3. 특수문자 제약

  • 특수문자 중 $, _만 사용가능

4. 카멜 표기법(camelCase)

  • 낙타의 등처럼 중간에 대문자가 튀어나온다고 하여 붙여진 이름으로 여러 단어를 붙여 쓸 때 띄어쓰기나 언더바 대신 각 단어의 첫글자를 대문자로 표기하는 방식
  • 합성어에 대한 표기법으로 주로 사용

5. 자바 예약어(키워드)를 사용할 수 없음

  • 접근제한자(public, private), import, for, if, else if 등은 변수명으로 사용할 수 없음

자료형(Data Type)

  • 기본 자료형 : 변수 자체에 값(리터럴, Literal)이 직접 저장됨
  • 참조 자료형 : 변수에 참조(레퍼런스, 주소)를 저장하며 기본 값은 null로 아무것도 참조하지 않음을 나타냄
타입세부 타입크기 (Byte)기본값값의 범위 (Range)비고
논리형boolean1 bit*falsetrue, false조건문 제어
문자형char2 byte\u00000 ~ 65,535 (Unicode)문자 1개 저장
정수형byte1 byte0-128 ~ 127이진 데이터 처리
short2 byte0-32,768 ~ 32,767C언어 호환용 (비추천)
int4 byte0약 ±21억 (-2^31 ~ 2^31-1)정수 연산의 기본형
long8 byte0L약 ±900경 (-2^63 ~ 2^63-1)대용량 ID, 타임스탬프
실수형float4 byte0.0f소수점 7자리 정밀도메모리 절약용
double8 byte0.0d소수점 15자리 정밀도실수 연산의 기본형

변수의 선언

  • 데이터를 저장할 수 있는 공간을 확보하고 이름을 부여하는 작업
  • 자료형과 이름을 통해 선언된다.
    ex)
    a라는 정수 변수를 만들다.
    -> int a;
    b라는 실수 변수를 만들다.
    -> double b;

변수의 초기화

  • 변수에 값을 저장하는 과정으로 선언 후 초기화와 선언과 동시에 초기화 모두 가능하다.

ex1) 선언 후 초기화

int a ;
int a = 10;

ex1) 선언과 동시에 초기화
int b = 1000;

변수의 종류

지역 변수(Local Variable)

  • 메서드나 블랙 내부에서 선언하여 해당 범위 내에서만 유효한 변수로 초기화하지 않으면 사용할 수 없음

멤버 변수(Instance Variable)

  • 클래스 내부에서 선언
  • 객체가 생성될 때 메모리 할당
  • 초기화하지 않으면 자료형의 기본 값으로 자동 초기화

클래스 변수(Static Variable)

  • static 키워드를 사용하여 선언
  • 모든 객체가 공유하는 변수
  • 클래스 로드 시 메모리에 한번만 생성

형 변환(Type Casting)

묵시적 형 변환(Implicit Casting)

  • 작은 데이터 타입을 큰 데이터 타입으로 변환
  • 데이터의 손실이 없음
  • 따라서 자동으로 변환

ex) 정수형에서 실수형으로 변환

int a = 1997 ;
double b = a;
** 이 경우 자동으로 형변환이 되며 실질적으로 데이터 손실이 없다.
-> int 보다 double이 더 큰 범위이기 때문이다.

명시적 형 변환(Explicit Casting)

  • 큰 데이터 타입을 작은 데이터 타입으로 변환
  • 데이터 손실 가능성 있음
  • 따라서 직접 명시해 주어야 변환

ex) 실수형에서 정수형으로 변환

double a = 190.7;
int b = (int) a ;

** 이 경우 데이터 손실 가능성이 있기 때문에 int로 바꿔줌을 명확히 명시해줘야한다.
-> int 가 double 보다 더 작은 범위이기 때문이다.

cf) long(8byte)에서 float(4byte)로 바꿀때는 묵시적일까? 명시적일까?
묵시적으로 나타난다. 이유는 실질적으로 byte는 더 적지만 float가 더 큰 범위의 수를 표현할 수 있기 때문이다!!


한줄요약 : 파이썬과 다르게 자바는 자료형 부터 복잡하다..

profile
비전공자의 개발도전기

0개의 댓글