본문 바로가기
Programming Language/Java

[Java/개념] 자료형과 변수

by wo__ongii 2024. 10. 7.
728x90
반응형

1. 자료형

자바에서 자료형(Data Type)은 변수에 저장될 값의 크기와 종류를 정의한다. 자바는 기본 자료형(Primitive Type)과 참조 자료형(Reference Type) 두 가지 주요 분류로 나눌 수 있다.

 

1) 기본 자료형 (Primitive Type)

기본 자료형은 자바에서 미리 정의된 가장 단순한 형태의 자료형으로, 값 자체를 직접 메모리에 저장한다. 크게 논리형, 숫자형(정수형과 실수형), 문자형으로 나눌 수 있다.

  • 논리형 (Boolean Type)
    • boolean: true 또는 false 값만 가질 수 있다.
  • 숫자형 (Numeric Type)
    • 정수형 (Integral Type)
      • byte: 1바이트 크기, -128 ~ 127 범위의 정수를 저장한다.
      • short: 2바이트 크기, -32,768 ~ 32,767 범위의 정수를 저장한다.
      • int: 4바이트 크기, -2^31 ~ 2^31-1 범위의 정수를 저장한다.
      • long: 8바이트 크기, -2^63 ~ 2^63-1 범위의 정수를 저장한다.
    • 실수형 (Floating Point Type)
      • float: 4바이트 크기, 소수점 이하 7자리까지 표현 가능하다.
      • double: 8바이트 크기, 소수점 이하 15자리까지 표현 가능하다.
  • 문자형 (Character Type)
    • char: 2바이트 크기로 하나의 문자(유니코드)를 저장합니다. 0~65,535 범위의 값을 가질 수 있다.

[기본 자료형 메모리 사용 크기 및 범위]

byte 1바이트 -128 ~ 127
char 2바이트 0 ~ 65,535
short 2바이트 -32,768 ~ 32,767
int 4바이트 -2^31 ~ 2^31-1
long 8바이트 -2^63 ~ 2^63-1
float 4바이트 소수점 이하 7자리 정밀도
double 8바이트 소수점 이하 15자리 정밀도
boolean 1바이트 true 또는 false

 

2) 참조 자료형 (Reference Type)

참조 자료형은 객체의 메모리 주소를 저장한다. 실제 값이 아닌, 값이 저장된 메모리 위치를 가리키기 때문에 참조형이라고 한다. 참조 자료형에는 클래스(Class), 인터페이스(Interface), 배열(Array), 열거형(Enum)이 포함된다.

  • 클래스 타입 (Class Type)
    사용자 정의 클래스나 API에서 제공하는 클래스의 객체를 참조한다.
  • 인터페이스 타입 (Interface Type)
    인터페이스의 구현 객체를 참조한다.
  • 배열 타입 (Array Type)
    같은 자료형의 값들이 순서대로 저장된 배열을 참조한다.
  • 열거형 타입 (Enum Type)
    특정 상수들의 집합을 참조한다.

3) 리터럴(Literal)과 상수(Constant)

3-1) 리터럴(Literal) : 리터럴은 변하지 않는 값, 즉 값 그 자체를 의미하며 이름이 없다. 예를 들어, 아래의 리터럴들은 각 자료형에 해당하는 값이다

  • 정수형: 5 (기본적으로 int로 인식)
  • 실수형: 2.5 (기본적으로 double로 인식)
  • 문자형: 'a' (하나의 문자로 char에 해당)
  • 문자열: "abc" (여러 문자의 조합으로 String에 해당)
  • 논리형: true 또는 false (boolean 값)
int num = 5;  // 정수형 리터럴 5를 변수 num에 저장
System.out.println(num);  // 출력: 5

 

3-2) 상수(Constant) : 상수는 변하지 않는 값이지만, 리터럴과 달리 이름이 있다. 상수는 한 번 초기화되면 값이 바뀌지 않으며, 자바에서 상수를 정의할 때는 final 키워드를 사용한다.

 

  • final 키워드를 사용하여 상수를 선언한다. 상수는 한 번 초기화된 이후에 값을 변경할 수 없다.
  • 상수명은 관례적으로 모두 대문자로 작성하며, 단어 사이에는 _를 사용한다.
  • 상수를 변경하려고 시도하면 컴파일 에러가 발생한다.

 

public class ConstantExample {
    public static void main(String[] args) {
        // 상수 선언
        final int MAX_VALUE = 100;  // 한 번 초기화된 후 값이 변경되지 않음
        System.out.println("상수 MAX_VALUE: " + MAX_VALUE);
        
        // 상수 값 변경 시도 (컴파일 에러 발생)
        // MAX_VALUE = 200;  // 오류: 상수는 값이 변경될 수 없음
    }
}

 

4) 문자 코드표 (Unicode)와 문자형

자바는 유니코드(Unicode)를 사용하여 문자형 데이터를 저장한다. 유니코드는 2바이트 크기로 전 세계의 문자들을 표현할 수 있다. 이 때 char는 음수 값을 허용하지 않는다.

char ch = 'A';  // 문자 리터럴
char ch2 = 65;  // 숫자로 표현된 문자 ('A'의 유니코드 값은 65)
System.out.println(ch);   // 출력: A
System.out.println(ch2);  // 출력: A

char ch3 = -5;  // 에러 발생: char는 음수를 표현할 수 없습니다.

 

5) 실수형 (Floating Point)

자바에서 실수형은 float과 double 두 가지가 있으며, double이 기본 실수형이다. 따라서 float 타입의 리터럴을 사용할 때는 F 또는 f 접미사를 붙여야 한다. double은 소수점 아래 15자리까지 정밀하게 표현할 수 있으며, float은 약 7자리까지만 표현 가능하다. 참고로 접미사는 소문자 대문자 둘 다 가능이지만 대문자가 눈에 더 잘보여서 선호한다.

double one = 2.5;  // 실수형 리터럴 기본값은 double
System.out.println(one);  // 출력: 2.5

float two = 2.5F;  // float형 리터럴은 F 접미사 필요
System.out.println(two);  // 출력: 2.5

double three = 2.1234567891234567;
System.out.println(three);  // 출력: 2.1234567891234567 (15자리까지 표현)

float four = 2.1234567891234567F;
System.out.println(four);  // 출력: 2.1234567 (7자리까지 표현)

 

 

2. 변수 (Variables)

변수는 메모리(RAM)에 이름을 부여한 공간으로, 특정 값을 저장하고 사용하는 데 활용된다. 자바에서 변수를 사용하려면 먼저 선언하고 초기화해야 한다.

int num;  // 변수 선언
num = 5;  // 변수 초기화

변수를 선언할 때는 자료형과 변수명을 명시하고, 값을 할당하여 초기화한다. 변수가 선언되면 해당 이름을 통해 메모리에 저장된 값에 접근할 수 있다.

 

1) 변수의 종류

  • 지역 변수: 메서드 내에서 선언되며, 메서드가 종료되면 소멸된다.
  • 전역 변수(인스턴스 변수): 클래스 내에서 선언되며, 객체가 생성될 때 할당된다.
  • 상수 (Constant): 값이 한 번 초기화되면 변경되지 않는 변수이다. 상수는 final 키워드를 사용하여 선언한다.

2) 변수명 명명 규칙

  1. 문자로 시작: 변수명은 숫자로 시작할 수 없다.
  2. 대소문자 구분: num과 Num은 서로 다른 변수로 인식된다.
  3. 키워드 사용 불가: boolean, int와 같은 자바 키워드는 변수명으로 사용할 수 없다.
  4. 특수문자 제한: _와 $만 사용할 수 있다.
  5. 의미 있는 이름: 변수명은 변수의 역할을 알 수 있도록 의미 있는 이름을 사용하는 것이 좋다.

3) 변수 표기법

  • 카멜 표기법 (camelCase): 소문자로 시작하고, 단어의 첫 글자는 대문자로 적는다. 예: numOneValue
  • 스네이크 표기법 (snake_case): 단어 사이를 _로 구분한다. 예: num_one_value
  • 파스칼 표기법 (PascalCase): 첫 글자를 대문자로 적는다. 주로 클래스 이름에 사용된다. 예: NumOneValue
  • 케밥 표기법 (kebab-case): 단어를 -로 구분한다. 주로 CSS 클래스명에 사용된다. 예: num-one-value

 

728x90
반응형