Java

[Java] 자료형

다콩잉 2022. 7. 8. 21:33

메모리 공간은 데이터를 저장하기 위해 생성한다. 이러한 메모리 공간은 목적에 따라 크기와 특징이 다른데, 이를 자료형이라고 한다. 즉, 메모리 공간의 자료형에 따라 저장할 수 있는 값의 종류와 특징이 결정된다.

 

 

 

자료형 선언시 주의할 점

 

  1) 자료형은 반드시 사용하기 전에 선언해야함

  2) 자료형은 반드시 한 번만 선언해야함

     -> 변수의 자료형이 처음 선언되면 메모리에는 선언된 자료형의 데이터만 저장할 수 있는 공간이 만들어지는데,

          메모리에서 한 번 만들어진 공간은 사라질 수는 있어도 데이터를 저장하는 기능은 변경할 수 없기 때문이다.

 

 

 

이름규칙

 

  · 변수, 상수, 메서드 공통

     1) 영문 대소문자와 한글 사용가능             

          ex) abc, ABC, aBc, 가나다

     2) 특수문자는 밑줄과 달러 표기만 가능

          ex) $abc, _abc, ab_c, $abc_

     3) 아라비아 숫자를 사용할 수는 있지만, 첫 글자로는 불가능

          ex) a3bc, ab3c

     4) 자바에서 사용하는 예약어는 사용불가

          ex) int(X), break(X), public(X), static(X)

 

 

자료형의 종류

구분 저장값 자료형
기본자료형 참, 거짓: true, false
정수: ····, -1, 0, 1, ····
실수: -5, 4, 1, 7, ·····
문자(정수): 'A', 'b', ····
boolen
byte, short, int, long
float, double
chaar
참조자료형 객체: Object 배열, 클래스, 인터페이스

-> 똑같은 정수를 저장하는데 자료형이 4개인 이유: 메모리를 효율적으로 사용하기 위해

 

 

 

자바 메모리의 구조

클래스영역
정적영역
상수영역
메서드영역
스택영역 힙영역

· 스택: LIFO 구조로 변수들이 저장되는 공간. 기본자료형이든 참조자료형이든 상관없이 모든 지역변수가 위치하는 영역

· 힙: FIFO 구조로 객체들이 저장되는 공간. 참조 자료형 변수가 가리키는 실제 데이터

 

 

 

실제 데이터값의 저장위치

 

  · 기본 자료형: 스택메모리에 생성된 공간에 실제 변수값을 저장

  · 참조 자료형: 실제 데이터값은 힙 메모리에 저장하고, 스택 메모리의 변수공간에는 실제 변수값이 저장된                                                  힙 메모리의  위치값을 저장

 

 

 

기본 자료형의 멤모리 크기와  저장할 수 있는 값의 범위

 

  · 1byte: boolean, byte

  · 2byte: short, char

  · 4byte: int, float

  · 8byte: long, double

    -> byte < short / char < int < long < float < double

  

  · 정수 리터럴의 자료형 결정

     byte a = 130; (오류 발생)

     -> byte에 저장할 수 없는 범위의 정수값이 입력되면 int로 인식( byte = int )

  · 실수 리터럴의 자료형 결정

     float a = 3.5; (오류 발생)

     -> 실수 리터럴은 기본적으로 double로 인식 ( float = double ) 

 

 

 

기본 자료형간의 타입변환

 

  · 캐스팅 방법 1. 자료형

int value1 = (int)5.3;		// 5
long value2 = (long)10; 	// 10
float value3 = (float)5.8;	// 5.8
double value4 = (double)16;	// 16.0

 

  · 캐스팅 방법 2. L, F

long value5 = 10L;		// 10
long value6 = 10l;		// 10
float value7 = 5.8F;		// 5.8
float value8 = 5.8F;		// 5.8

 

 

 

캐스팅

 

  · 자동형변환: 업캐스팅, 크기가 작은 자료형을 큰 자료형에 대입

                         -> 어떤 데이터 손실도 발생하지 않기 때문에 타입변환 코드를 넣지 않아도 컴파일러가 자동으로 형변환

  · 명시적형변환: 다운캐스팅, 큰 자료형을 작은 자료형에 대입

                            -> 데이터 손실이 발생할 수 있기 때문에 컴파일러가 자동형변환을 하지 않음

  · 업캐스팅이 아님에도 byte 및 short 자료형에 저장할 수 있는 범위 내의 정수리터럴값이 대입될 때는 자동형변환이

     각각의 자료형으로 수행

 

// 자동타입변환
float a = 3;		// (int) -> (float) 업캐스팅 3.0
long b = 5;		// (int) -> (long) 업캐스팅 5
double c = 7;		// (int) -> (double) 업캐스팅 7.0
byte d = 9;		// (int) -> (byte) 9
short e - 11;		// (int) -> (short) 11

// 수동타입변환
byte a = (byte)128	// (int) -> (byte) 다운캐스팅 -128
int a = (int)3.5	// (double) -> (int) 다운캐스팅 3
float c = (float)7.5	// (double) -> (float) 다운캐스팅 7.5

 

 

 

자료형 연산

 

  · 같은 자료형 간의 연산 결과

    ex) byte + byte = int     /     short + short = int

  · 다른 자료형 간의 연산 결과

    ex) byte + short = int     /     int + float = float     /     long + float = float

 

 

  

728x90