본문 바로가기

Java

[자바의 신] 자료형이 뭐죠?

우리가 변수를 생성할때 int, String, Bicycle 등등 앞에 붙이는 단어들은 어떤 의미가 있을까? 이 단어들은 해당 변수의 자료형(타입)을 나타낸다. 자바의 자료형(타입)은 크게보면 2가지가 있다.

 

1. 기본 자료형

2. 참조 자료형

 

기본자료형과 참조 자료형의 차이는 변수를 초기화 할 때 나타난다. 변수를 초기화 할때, 기본자료형은 new 키워드없이 바로 초기화가 가능하지만, 참조 자료형은 new 키워드와 생성자를 사용한다. 단, String클래스의 경우에는 참조 자료형임에도 new 키워드 없이 초기화 할 수 있다. 

// 기본자료형의 변수 초기화
int variable = 10;

// 참조자료형의 변수 초기화
Bicycle bicycle = new Bicycle();

// 예외 String
String str1 = "hello world!";
String str2 = new String("hello world!");

먼저, 자바에는 8가지 기본 자료형이 있다.

 

자바의 자료형

  1. boolean
    • 기본값 : false
    • 참(true) 또는 거짓(false)
    • 덧셈, 뺄셈등의 기본 연산도 사용할 수 없음.
  2. char
    • 기본값 : 공백('\u0000')
    • 0('\u0000') 에서 216-1(65,535, '\uffff') 까지의 범위를 갖는다.
    • 정수 자료형 중에서 유일하게 부호가 없는(unsigned) 자료형
    • char 값은 'a', '\u'와 16진수 값, 44032(아스키코드 0~65,535)의 방법으로 생성한다.
  3. byte
    • 기본값 : 0
    • -27(-128) 에서 27-1(127) 까지의 범위를 갖는다.
    • 1byte는 8bit, 1bit는 0 또는 1의 값을 가질 수 있는 하나의 공간임.
    • 원래 최대값은 255임 (2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0 = 255)
    • 맨 앞자리를 부호로 결정(0은 양수, 1은 음수)했기 때문에 최대값은 127임.
    • 0과 -0은 사실 같은 값이지만, 하나라도 더 많은 값을 표현하기 위해 맨 앞자리만 1인 것은 해당 타입의 최소값으로 규정함. 그래서 -127보다 작은 -128이 최소값임.
    • 최대값 01111111 에서 1을 더하면 10000000 최소값이 되고, 10000000 최소값에서 1을 빼면 01111111 최대값이 된다. 
  4. short
    • 기본값 : 0
    • -215 (-32,768) 에서 215-1 (32,767) 까지의 범위를 갖는다.
  5. int
    • 기본값 : 0
    • -231 (-2,147,483,648)에서 231-1(2,147,483,647) 까지의 범위를 갖는다.
  6. long
    • 기본값 : 0
    • -263 (-9,223,372,036,854,775,808)에서 263-1 (9,223,372,036,854,775,807)까지의 범위를 갖는다.
    • 일반적으로 long타입의 숫자를 명시적으로 초기화 할때는 숫자 맨 뒤에 'L'을 붙여야 한다.
  7. float
    • 기본값 : 0.0
    • 소수점 값을 처리하기 위해 사용함.
    • 32비트로 표현
    • 32비트 범위를 넘어서는 값에 대해서 정확성을 보장하지 못한다.
    • single-precision 32-bit IEEE 754 floating point(32비트 단정밀도)
    • 부호 1자리 + 지수 8자리 + 가수 23자리 = 32비트
  8. double
    • 기본값 : 0.0
    • 소수점 값을 처리하기 위해 사용함.
    • 64비트로 표현
    • 64비트 범위를 넘어서는 값에 대해서 정확정을 보장하지 못한다.
    • double-precision 64-bit IEEE 754 floating point(64비트 배정밀도)
    • 부호 1자리 + 지수 11자리 + 가수 52자리 = 64비트

기본 자료형 이외의 String 또는 이전에 만든 Bicycle 등의 클래스는 모두 참조 자료형이다. 

 

※ 기본 자료형의 형변환

 

  • 형 변환은 서로 다른 타입간에 자료형을 변환하는 작업이다.
  • boolean 타입을 제외하고 모든 기본 자료형은 형 변환이 가능하다.
  • 기본자료형 ↔ 참조자료형 형 변환은 안된다.
  • 숫자값을 참조 자료형으로 변경할 수 있는 방법이 전혀 없는 것은 아니다.(Integer, Long)
  • byte(1바이트, 8비트) → short(2바이트, 16비트) 아무문제 없음
  • short(2바이트, 16비트) → byte(1바이트, 8비트) 1바이트를 버리게됨. -> 예상한 것과 다른 결과를 볼 수 있음. 주의요망.