검수요청.png검수요청.png

자료형

위키원
이동: 둘러보기, 검색

자료형(資料形) 또는 데이터 타입(data type)이란 프로그래밍 언어에서 여러 종류의 데이터를 식별하는 분류를 말한다. 데이터 타입은 해당 자료형에 대한 가능한 값, 해당 자료형에서 수행을 마칠 수 있는 명령들, 데이터의 의미, 해당 자료형의 값을 저장하는 방식을 결정한다.[1]

개요

자료형(Data Type)은 기본자료형과 참조자료형으로 나뉘게 되는데, 우선 기본자료형문자형, 숫자형, 논리형으로 나뉘게 된다. 참조자료형클래스형, 인터페이스형, 배열형으로 나뉘게 되는데, 인터페이스형은 그렇게 많이 사용하는 타입은 아니다. 기본자료형의 종류는 불린(boolean), 정수(int), 문자(char), 문자열(string), 부동소수점(Floating Point) 등이 있는데 자료형이 정해지지 않은 경우 void를 사용한다.

특징

분류

자바 자료형의 분류[2]

기본자료형

기본자료형(primitive datatype)은 값을 가지고 있는 변수 즉, 선언된 변수에 실제 값이 저장된다. [2] [3] Java 언어에서 제공하는 기본자료형에는 하나의 문자를 표현하는 char, 표현 범위에 따라 정수를 표현하는 byte,short, int, long, 표현 범위와 오차 범위에 따라 실수를 표현하는 float, double을 제공한다. [4]

문자형
  • 정의

문자형은 문자를 저장하기 위한 변수를 선언할 때 사용되며, char 타입은 하나의 문자만 저장할 수 있다. char 타입을 표현할 수 있는 방법은 문자, ASCII코드, 특수문자(유니코드 포함)으로 3가지 방법이 있다. 가장 쉽게 사용할 수 있는 방법은 한 문자로 표현하는 것이다. [5]

  • 종류

① char : char은 java의 자료형 중에서 유일하게 unsigned인 값의 범위 중에서 음수가 없는 자료형이다. 유니코드를 도입하여 2byte의 범위로 이뤄져 있다. [6]

< 문자형 > [4]
예약어 메모리 크기 디폴트 값 표현 범위
char 2 byte '\0' 0 ~ 65535
  • 표현 방법[5]

1) 한 문자로 표현 : 작은 따옴표 사이에 출력할 한 문자를 넣는다.

char x = 'y';
System.out.println(x);
[ 출력값 ] 
>> y

2) ASCII코드로 표현 : ASCII코드에 해당하는 10진수 숫자로 표현한다.

char x = 65;
System.out.println(x);
[ 출력값 ]
>> A
ASCII 코드표[5]

3) 특수문자로 표현 : 백슬러시(\) 다음에 특수 기호를 붙여서 표현한다.

System.out.println("\"Java\"");
[ 출력값 ]
>> "Java"
< 특수 문자 > [5]
특수문자 문자 표현법
tab \t
backspace \b
form feed \f
new line \n
carriage return \r
역슬래시(\) \\
작은 따옴표(') \'
큰 따옴표(") \"
유니코드(16진수) \u유니코드
숫자형
정수형
  • 정의

정수형은 Java 언어에서는 정수를 표현하기 위해 byte, short, int, long을 제공한다. [4]

① byte : byte는 정수형 자료 중 가장 작은 범위의 수치를 저장하는 자료형이다. 주로 배열이나 데이터 전송을 위해 많이 사용되는데 Java에서는 반드시 byte의 범위인 -128 ~ 127 사이의 수만 사용해야 한다.

② short : short는 C언어와 같이 2byte 메모리 체계의 int 자료형과 호환성을 위해 많이 사용하는 자료형이다. 일반적으로는 사용될 수 있지만 정수형 자료형으로는 잘 사용되지 않는 자료형이다.

③ int : int는 정수형 자료형 중에서 대표적인 자료형이다. 모든 언어에서 기본이 되는 자료형으로써, 모든 정수 수치의 기본 구조가 된다. 또한 정수 연산시에 발생하는 결과값은 모두 int형으로 출력된다.

④ long : long은 int보다 큰 정수형 데이터를 저장하기 위한 목적으로 만들어진 자료형이다. long을 초기화 할 경우에 현재 시스템에 int보다는 크다는 사실을 인식시키기 위해 소문자 'l'이나 대문자 'L'을 붙여야한다.

< 정수형 > [4]
예약어 메모리 크기 디폴트 값 표현 범위
byte 1 byte 0 -128 ~ 127
short 2 byte 0 -32768 ~ 32767
int 4 byte 0 -2의 31승 ~ 2의 31승
long 8 byte 0 -2의 63승 ~ 2의 63승
  • 표현 방법[7]

1) 따옴표는 사용하지않는다. 정수형 자료형이기 때문에 실수값을 대입하면 오류가 발생한다.

EX) 정수형 자료형 중 int 타입
int x = 10;
int y = 7.18;
System.out.println(x);
System.out.println(y);
[ 출력값 ] 
>> 10
>> int 타입은 정수형 자료형이기 때문에 실수값을 변수에 대입했을땐 오류가 발생한다.
실수형
  • 정의

실수형은 자바 언어에서는 실수를 표현하기 위해 float, double을 제공한다. [4]

① float : float은 4byte 범위를 나타낼 수 있지만 정수형보다는 훨씬 많은 범위를 포함하고 있다. 정수는 0, 1, 2 ... 순이지만 실수는 0, 0.1, 0.01 ... 순이기 때문이다.

② double : double은 실수형의 기본자료형으로 8byte 범위를 나타낼 수 있다. 가장 큰 자료형으로 원하는 만큼의 수를 지정하여 사용할 수 있는 자료형이다.

< 실수형 > [4]
예약어 메모리 크기 디폴트 값 표현 범위
float 4 byte 0.0 -3.4E38 ~ 3.4E38
double 8 byte 0.0 -1.7E308 ~ 1.7E308
  • 표현 방법 [7]

1) 따옴표는 사용하지않는다. 실수형 자료형이기 때문에 정수값을 대입해도 오류가 발생하지않는다.

EX) 정수형 자료형 중 double 타입
double x = 10;
double y = 7.18;
System.out.println(x);
System.out.println(y);
[ 출력값 ] 
>> 10.0 // 정수값은 실수값에 포함이기 때문에 오류없이 출력된다.
>> 7.18
논리형
  • 정의

논리형은 자바 언어에서는 참과 거짓을 표현하기 위해 불린(boolean)을 제공한다. 주로 제어문이나 반복문의 조건식에서 사용된다. [4]

  • 종류

① boolean : boolean은 논리형식인 참과 거짓으로 표현되는 자료를 저장하고, 작은 따옴표나 큰 따옴표는 true/false에 사용해서는 안된다. [6]

< 문자형 > [4]
예약어 메모리 크기 디폴트 값 표현 범위
boolean 1 bit false true or false
  • 표현 방법

1) 변수값은 true나 false로만 저장해야한다. [4]

boolean x = true;
System.out.println(x);
[ 출력값 ] 
>> true

2) 제어문이나 반복문의 조건식으로 사용할 수 있다.

boolean x;   // 디폴트 값 : false
x = (8%2 == 0);
System.out.println(x);
if(x) {
   System.out.println("짝수");
} else(x) {
   System.out.println("홀수");
}
[ 출력값 }
>> true
>> 짝수

참조자료형

참조자료형(reference dataType)은 주소를 가지고 있는 변수 즉, 선언된 변수에 값이 아닌 인스턴스에 대한 주소값이 저장된다. [2] [3] Java API에서 제공되거나 프로그래머에 의해 만들어진 클래스를 자료형으로 선언하는 경우라고 할 수 있다. [8] 또한 참조자료형의 종류들은 new 키워드를 이용하여 객체를 만들어야만 실제로 메모리가 할당되고 그 공간을 사용할 수 있다. [9] 하지만 String과 배열은 new 키워드 없이 객체를 생성할 수 있지만 참조자료형에 속한다. [10]

클래스
  • 정의

클래스(class)는 클래스 자료형 객체가 갖는 참조값을 가지고 있다. 보통 String은 new 키워드 없이 기본자료형처럼 사용해서 값이 저장되어 있다고 생각할 수 있지만, 이는 참조자료형이기 때문에 값이 아닌 주소를 갖고 있다. [8][10]

1) String 클래스
  • 정의

스트링(string) 클래스는 참조형에 속하지만 기본형처럼 사용한다. 그렇다고해서 기본형은 아니다. 또한 String 클래스는 불변하는 객체로써, 값을 변경해주는 메소드들이 존재하지만 해당 메소드를 통해 데이터를 바꾼다해도 새로운 String 클래스 객체를 만들어내는 것이다. String 객체간의 비교는 .equals() 메소드를 사용해야한다. [11]

  • 표현(선언) 방법 [12]

1) Literal 방식

public class Test {
    public static void main(String[] args) {
       String test = "test";
    }
}

2) new 생성자 호출을 통합 값 주입 방식

public class Test {
    public static void main(String[] args) {
       // 선언1
       char[] test = {'t', 'e', 's', 't'};
       String str1 = new String(test);
       // 선언2
       String str2 = new String("test");
    }
}
래퍼 클래스
  • 정의

래퍼(wrapper) 클래스는 기본자료형을 감싼 형태로, 기본자료형의 데이터를 인스턴스(객체)로 만들기 위해 사용하는 클래스이다. [13] 1) Literal 방식 기본자료형은 비객체이기 때문에 'null'값을 넣을 수 없지만, 기본형에 'null'값을 넣고 싶다면 Wrapper 클래스를 이용하면 된다. [11]

  • 표현(선언) 방법 [13]

1) Wrapper 클래스에 해당되는 기본자료형 데이터 이용

public class Test {
    public static void main(String[] args) {
        int x = 5;
        Integer x_test = new Integer(x); // int → Integer
        String y = "5";
        Integer y_test = new Integer(y); // String → Integer
    }
}
< Wrapper 클래스의 종류 >
기본자료형 Wrapper 클래스
byte Byte
char Char(Character)
short Short
int Integer
long Long
float Float
double Double
boolean Boolean

2) valueOf() 메소드 이용

pulbic class Test {
   public static void main(String[] args) {
      int x = 5;
      Integer x_test = Integer.valueOf(x); // int → Integer
      String y = "5";
      Integer y_test = Integer.valueOf(y); // String → Integer
   }
}
인터페이스
  • 정의

인터페이스(interface)는 추상메소드상수의 집합니다. 인터페이스는 클래스와 유사하지만, 인스턴스 변수가 부족하고 모든 메소드가 추상 메소드로 선언된다. Java에선 다중 상속을 지원하지않지만, 인터페이스를 이용함으로써 다중 상속의 기능을 유사하게 구현할 수 있다. [14]

  • 표현(선언) 방법 [15]

1) 구현부와 함께 선언해야 인터페이스 사용 가능

public interface Eatable {
   void eat();
}
public interface action extends Eatable {
    // 구현부
} 
배열
  • 정의

배열(array)은 여러 개의 값을 관리할 수 있다. 배열은 하나의 공간을 갖게되고, 그 공간에 값이 직접 들어가는게 아니라 값이 들어있는 다른공간의 위치 주소값(참조값)을 알려준다. 또한 같은 타입의 값만 받을 수 있으며, 어떤 형태의 값을 받을지 선언할 때 지정해줘야 한다. [16]

  • 표현(선언) 방법 [11]

1) 기본자료형으로 배열 선언

public class Test {
   public static void main(String[] args) {
       int [] x = new int[array_size]; // array_size는 0보다 큰 정수
   }
}

2) 참조자료형으로 배열 선언

public class Test {
   public static void main(String[] args) {
      Long [] x = new Long[array_size]; // array_size는 0보다 큰 정수
      Object[][] y = null;
   }
}

각주

  1. 자료형〉, 《위키백과》
  2. 2.0 2.1 2.2 자바 자료형〉, 《퍼그의 전초기지》
  3. 3.0 3.1 자바!변수(기본자료형, 참조자료형, 자료의 형변환)〉, 《개인블로그》, 2017-04-12
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 기본 자료형〉, 《언제나휴일(EHPUB.CO.KR)》
  5. 5.0 5.1 5.2 5.3 문자형-char〉, 《개인블로그》, 2017-11-18
  6. 6.0 6.1 6.2 6.3 JAVA의 기본 자료형(1)〉, 《개인블로그》, 2007-04-30
  7. 7.0 7.1 정수와 실수〉, 《[바로실습]생활코딩-자바(JAVA)》
  8. 8.0 8.1 참조 자료형(reference data type), 참조 자료형 종류〉, 《개인블로그》
  9. 자바 기초_3 참조 자료형 이해하기〉, 《개인블로그》, 2015-08-06
  10. 10.0 10.1 Java 참조 자료형(클래스, 인터페이스, 배열, 열거 타입)〉, 《개인블로그》, 2020-05-23
  11. 11.0 11.1 11.2 자바 자료형 정리(Java Data Type)〉, 《개인블로그》, 2015-10-30
  12. Java 자료형과 String pool〉, 《개인블로그》, 2020-07-01
  13. 13.0 13.1 래퍼(Wrapper)클래스와 박싱(boxing), 언박싱(un-boxing)〉, 《개인블로그》, 2017-04-05
  14. 인터페이스(Interface)〉, 《지식공유사이트》, 2018-06-27
  15. [JAVA 인터페이스(Interface)]〉, 《개인사이트, SUNGBUM PARK》, 2019-10-10
  16. 자바의 배열〉, 《개인블로그》, 2020-02-04

같이 보기


  검수요청.png검수요청.png 이 자료형 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.