2.2 Data Type

작성자 : 진은영 ( 2004-07-02)

목차
  • DataType이란
  • Primitive Type
  • Reference Type
  • 변수

2.2.1 DataType이란

Data가 갖는 형으로 Data의 실질적인 구조 및 개념, 그리고 그 Data에서 행할 수 있는 연산 등을 정의한다.
자바에서 사용하는 DataType은 아래와 같다.
Primitive Type : 자바에서 기본으로 제공하는 타입으로 8가지가 있다.
Reference Type : 기본형을 제외한 나머지 타입을 가리킨다.

① Primitive Type
분류 종류 범위 기본값
Logical boolean true/false false
Textual char 0 ~ 255 '\u0000'
Integral byte 1 byte (-2^7 ~ 2^7 -1) 0
short 2 byte (-2^15 ~ 2^15 -1) 0
int 4 byte (-2^31 ~ 2^31 - 1) 0
long 8 byte (-2^63 ~ 2^63-1) 0
Floating float 4byte 0.0
double 8byte 0.0

기본형은 복잡한 객체가 아닌 하나의 값만을 표현한다.

② Reference Type
기본형을 제외한 나머지 모든 타입이 Reference Type이다.

2.2.2 Primitive Type

각각의 데이터 타입에 대해서 알아보자
자바는 4개의 정수 타입 byte , short , int , long을 정의한다. 이들은 모두 부호가 있는 양과 음의 값을 갖는다.

① byte
가장 적은 정수 타입이다. byte타입의 변수들은 네트워크나 파일등에 사용할 때 특히 유용하다.

byte b , c ;

② short
부호가 있는 16bit 타입이다. 이 타입은 요즘은 거의 사용하지 않는 타입이다.

short b , c ;

③ int
일반적으로 사용되는 정수형이다. 추가적으로, int타입의 변수들은 반복문을 제어하고 배열에 색인을 넣을때도 사용한다. 정수형에서의 기본값도 int타입이다.

int b , c ;

④ long
int타입이 사용하는 값을 보관하기에 충분히 크지 않은 경우에 유용하다.

long b , c ;

정수형을 이용한 예제를 하나 다뤄보자

class IntTest{
  public static void main( String [] args ){
    byte b1 =10;
    short s1 =10; 
    int i1 =10;
    long l1 =10;

    System.out.println( "byte=" + b1 ) ; 
    System.out.println( "short=" + s1 ) ; 
    System.out.println( "int=" + i1 ) ; 
    System.out.println( "long=" + l1 ) ; 
  }
}
결과

---------- java ----------
byte=10
short=10
int=10
long=10
출력 완료 (0초 경과) - 정상 종료

그러나 정수형 중 long 타입에 값을 대입할 때 조금 틀린것이 있다. 아래의 예를 보자
class LongTest{
  public static void main( String [] args ){
    long l1 = 1234567891234 ; 
  }
}
컴파일
---------- javac ---------- LongTest.java:3: integer number too large: 1234567891234
long l1 = 1234567891234 ;
^
1 error
출력 완료 (1초 경과) - 정상 종료

정수형에서 기본값이 int 타입이기 때문에 long타입의 값을 넣을 때는 아래와 같이 L을 넣어야 한다.
long l1 = 1234567891234L ;


⑤ float
32비트의 실수의 값을 입력한다.
float h , l ;

⑥ double
매우 빠른 수학적 계산을 위해서 최적화된 요즘의 몇몇 프로세스에서는 float타입보다 훨씬 빠르다.
double h , l ;

실수형을 이용한 예제를 하나 다뤄보자
class FloatTest{
  public static void main( String [] args ){
    float f1 ; 
    double d1 ; 

    f1 = 5 ; 
    d1 = 5 ; 

    System.out.println( "float = " + f1 ) ; 
    System.out.println( "double = " + d1 ) ; 
  }
}
결과
---------- java ----------
float = 5.0
double = 5.0
출력 완료 (2초 경과) - 정상 종료

그러나 아래의 예는 오류가 난다.
class FloatTest1{
  public static void main( String [] args ){
    float f1 ; 
    double d1 ; 

    f1 = 5.0; 

    System.out.println( "float = " + f1 ) ; 

  }
}
컴파일
---------- javac ----------
FloatTest1.java:6: possible loss of precision
found : double
required: float
f1 = 5.0;
^
1 error
출력 완료 (2초 경과) - 정상 종료

실수형에서의 기본값은 double형이다. 그렇기 때문에 오른쪽의 값의 5.0은 float이 아니고 double이기 때문에 타입이 틀리다고 나온다. float 타입인 경우 F를 값의 끝에 붙여야 한다.
float f1 = 5.0F ;

⑦ char
자바에서 문자를 저장하기 위해 사용되는 데이터 타입이다. 자바는 문자를 표현하기 위해서 유니코드를 사용한다. 그래서 16bit를 필요로 한다.
class CharTest{
  public static void main( String [] args ){
     char ch1 , ch2 ;
     ch1 = 88 ; 
     ch2 = 'Y' ; 

     System.out.println( "ch1= " + ch1 ) ; 
     System.out.println( "ch2= " + ch2 ) ; 
  }
}

---------- java ----------
ch1= X
ch2= Y
출력 완료 (0초 경과) - 정상 종료
ch1에 문자 X에 해당하는 아스키코드값인 88이 할당되었다. 그래서 결과가 88로 출력되지 않고 X로 출력된 것이다.

⑧ boolean
논리적인 값을 위해서 boolean이라는 간단한 타입을 갖는다. 이 타입은 true 와 false중 하나를 갖는다.
boolean b = true ;
true나 false는 문자가 아니기 때문에 '' , ""를 붙이지 않는다.

2.2.3 Reference Type

객체에 대한 부분을 먼저 알아야 하기 때문에 나중에 객체를 배우면서 다시 다루겠다.

2.2.4 변수

변수는 자바 프로그램에서 기억 장소의 기본 단위이다.

① 변수 선언하기

DataType 변수명 = 값 ;
예는 아래와 같다.
int a , b, c ;
int d = 3 ;
byte z = 22 ;
double pi = 3.15 ;
char x = 'x' ;

참고문헌
  • javanuri의 Java Beginner
  • http://www.upc.or.kr/juotte/javatutor/week_02/jp02_4_doc.html
  • The Complete Reference Java2 [대광서림]