언어 공부/JAVA_자바

[JAVA / 자바] 자바의 데이터 타입

Seunghyun_KO 2021. 12. 19. 09:00
728x90
반응형

변수 (Variable)

 - 어떤 값을 저장하는 공간

 - 사용할 변수 선언(변수에 저장할 값의 타입, 즉 데이터 타입을 함께 선언)

출처: IT COOKBOOK

기본 타입(primitive type) : 키워드로 정의된 8개의 기본 데이터 타입

 - 정의된 형태의 값을 변수에 저장하기 위한 데이터 타입(문자 데이터 저장 시 유니코드 값 사용)

 - 데이터 타입을 사용하여 변수를 선언하면, 해당 타입에 따라 정해진 메모리 크기가 변수에 할당

구분 기본 타입 메모리 크기 (byte: 바이트)
정수타입 byte 1
short 2
int 4
long 8
char 2
부동 소수점 타입 float 4
double 8
불리언 타입 boolean -

 

참조 타입(reference type)

 - 참조값(reference value)을 다루기 위한 데이터 타입 (참조값: 메모리 주소를 계산할 수 있는 값)

 - 기본 타입을 제외한 나머지 타입 (배열, 클래스, 인터페이스, 열거 타입)

 

배열 타입(array type)

 - 같은 데이터 타입의 변수들을 메모리에 연속으로 저장한 데이터들의 그룹

 - 인덱스 (배열의 요소를 구별하기 위해 사용하는 번호로 0부터 시작한다.)

 - 1차원 배열의 선언과 생성 및 사용

   ex) 데이터 타입 배열 이름[]       OR         데이터 타입[] 배열 이름;

     1. 데이터 타입: 배열을 구성하는 각 요소에 대한 공통된 데이터 타입

     2. 배열 이름: 배열 변수의 이름으로 사용자가 정한 식별자

     3. 대괄호: 보통의 변수가 아니라 배열 변수임을 나타내는 기호

 - 데이터 타입에 따른 배열 선언 예

배열 선언 char c[];
char[] c;
int i[];
int[] i;
long l[];
long[] l;
의미 char형 배열 요소들에 대한 배열 c 선언 int형 배열 요소들에 대한 배열 i 선언 long형 배열 요소들에 대한 배열 l 선언

 - 배열 생성

   ☞ 기본 타입의 변수를 선언하면 그에 대한 메모리 공간이 자동으로 생성되지만, 참조 타입의 변수는 메모리 참조값을 저장할 수 있는 공간만 확보한다.

   ☞ new 연산자를 사용하여 데이터가 저장될 전체 메모리 생성 작업 필요

   ☞ 생성되는 메모리 크기 = 데이터 타입에 지정된 메모리 크기 X 배열 크기

     ex) new 데이터 타입 [배열 크기];

       1. new: 메모리 생성(할당) 연산자

       2. 데이터 타입: 생성할 배열의 데이터 타입

       3. 배열 크기: 생성할 배열의 내부 요소의 개수

 - 배열 생성 예

배열 생성 c = new char[10]; i = new int[10]; l = new long[10];
의미 char형 배열 요소 10개에 대한 메모리가 생성된 배열 c  int형 배열 요소 10개에 대한 메모리가 생성된 배열 i long형 배열 요소 10개에 대한 메모리가 생성된 배열 l
배열 요소 [0] ~ c[9] [0] ~ i[9] [0] ~ l[9]
메모리 할당 크기 2byte X 10 = 20 byte 4byte X 10 = 40byte 8byte X 10 = 80 byte

 - 다차원 배열의 선언과 생성 및 사용

   ☞ 다차원 배열 = 1차원 배열의 집합

   ☞ 다차원 배열의 크기 = 배열크기1 X 배열 크기 2

   ☞ 다차원 배열의 선언과 생성 예

     데이터 타입 배열 이름[][];   (OR   데이터 타입[][] 배열 이름;)   =   new 데이터 타입 [배열크기1][배열크기2];

     ex) int array [][] = new int [2][3];

   논리적 구조:

array[0][0] array[0][1] array[0][2]
array[1][0] array[1][1] array[1][2]

   물리적 구조:

array[0][0] array[0][1] array[0][2] array[1][0] array[1][1] array[1][2]

 

클래스 타입(class type)

 - 여러 타입의 변수와 메서드를 그룹으로 묶어서 새롭게 정의한 사용자 정의 데이터 타입

 - 기본 타입의 메서드를 사용할 수 없으므로, 클래스 타입의 데이터를 연산할 수 있는 새로운 메서드 정의 필요

 - 클래스 타입의 정의와 선언 및 생성(사용자 정의 데이터 타입이므로 먼저 사용할 클래스 타입에 대해 정의)

 - 클래스 타입 변수의 선언과 생성 예

 ex) PointXY point1 = new PointXY(10, 20);

 

인터페이스 타입(interface type)

 - 여러 클래스 타입에서 공통으로 사용하는 상수와 메서드를 따로 분리하여 추상화시킨 타입

 - 메서드 멤버 ☞ 상수만 사용하여 내용 없이 선언 = 추상 메소드

 - 인터페이스 타입 정의 예

 ex )

interface InterfaceName{
	void methodName();
}

 - 인터페이스 타입에 대한 구현 클래스 정의 예

interface Sound{
	void speak();
}

// 구현 클래스 1
class Dog implements Sound{
	int num;
    Dog(int num){
    	this.num = num;
    }
    public void speak(){
    	for(int i=0; i<this.num; i++){
    		System.out.println("bark");
        }
    }
}

// 구현 클래스 2
class Cat implements Sound{
	int num;
    Cat(int num){
    	this.num = num;
    }
    public void speak(){
    	for(int i=0; i<this.num; i++){
    		System.out.println("meow");
        }
    }
}

 - 인터페이스 타입 변수의 선언

   ☞ 인터페이스 타입의 이름을 사용하여 변수 선언

     ex) Sound sound1;

 - 인터페이스 타입 변수의 생성

   ☞ new 연산자와 인터페이스 타입을 구현한 클래스의 이름을 사용하여 변수 선언

     ex) Sound sound1 = new Dog(1);

 

열거 타입(enum type)

 - 표현할 데이터가 정해진 수의 값만 가지고 있는 경우

   ex) 요일을 표현하는 값 = 일, 월, 화,..., 토 7개

 - 열거 타입 정의

   ☞ 키워드 enum 뒤에 열거 타입 이름을 쓰고, 중괄호 사이에 선언할 상수를 콤마로 구분

     ex)

enum Week{SUN, MON, TUE, WED, THU, FRI, SAT}

 - 열거 타입 변수의 선언과 사용

    ex)

Week myWeek = Week.WED;
728x90
반응형