프로그래밍 언어/JAVA

[JAVA] 데이터 타입

김곰댕 2021. 6. 7. 14:55
728x90

기본 타입

값의 종류 기본 타입 메모리 사용 크기 저장되는 값의 범위
정수 byte 1 byte 8 bit 2^7 ~ 2^7-1 (-128~127)
char 2 byte 16 bit 0 ~ 2^16-1 (유니코드: \u0000~\uffff, 0~65535)
short 2 byte 16 bit -2^15 ~ (2^15-1) (-32,768~32,767)
int 4 byte 32 bit -2^31 ~ 2^31-1 (-2,147,483,648~2,147,483,647)
long 8 byte 64 bit -2^63 ~ 2^63-1
실수 float 4 byte 32 bit (+/-)1.4E-45 ~ (+/-)3.4028235E38
double 8 byte 64 bit (+/-)4.9E-324 ~ (+/-)1.7976931348623157E308
논리 boolean 1 byte 8 bit true, false
최상위 부호 비트 : 0(양수), 1(음수)

ex)

byte  -2^7 ~ 2^7-1

제일 앞의 1bit는 음수/양수를 구분해주는 bit이므로 나머지 조합으로 값의 범위 숫자가 결정

저장되는 값의 범위가 -128 ~ 128이 아닌 127인 이유는 0을 포함하기 때문 / 값의 범위를 초과하면 컴파일 에러가 일어남

S 7bit

예제)

package sec02.exam01_byte;

public class GarbageValueExample 
{

	public static void main(String[] args) 
	{
		byte var1 = 125;
		
		var1++; //var1 = var1 + 1; 과 같음
		System.out.println(var1);
		
		var1++;
		System.out.println(var1);
		
		var1++;
		System.out.println(var1); //127을 넘으면 -128부터 다시시작
	}
}

출력 결과

예제)

package sec02.exam01_byte;

public class GarbageValueExample 
{

	public static void main(String[] args) 
	{
		byte var1 = 125;
		int var2 = 125;
		
		for(int i = 0; i<5; i++) //i는 0, 괄호안의 작업을 완료할때마다 i는 1증가 / i가 5미만일때까지 반복
		{
			var1++; //var1 = var1 + 1;
			var2++; //var = var2 + 1;
			System.out.println("var1 : " + var1 + "\t" + "var2 : " + var2); // var1과 var2의 결과값 출력
		}
		
	}
}

출력 결과

 

char 타입

2byte 부호없는 정수값 저장

char 타입에는 한 문자를 유니코드로 저장

유니코드? 세계 각국의 문자들을 2byte 표현되는 코드값으로 매핑한 국제 표준 규약


하나의 문자 리터럴은 작은 따옴표 ( ' ) 로 감싸야 한다.

char var1 = 'A'

직접 유니코드 정수 값을 저장할 수도 있다.

char c = 65;
char c = '\u0041';

유니코드를 알고 싶은 경우

char c = 'A';
int uniCode = c;

예제)

package sec02.exam02_char;

public class CharExample 
{

	public static void main(String[] args) 
	{
		char c1 = 'A'; //문자저장
		char c2 = 65; //10진수 저장
		char c3 = '\u0041'; //16진수 저장
		
		char c4 = '가'; //문자저장
		char c5 = 44032; //10진수 저장
		char c6 = '\uAC00'; //16진수 저장
		
		int uniCode = c1; //유니코드 얻기
		
		System.out.println(c1);
		System.out.println(c2);
		System.out.println(c3);
		
		System.out.println(c4);
		System.out.println(c5);
		System.out.println(c6);
		
		System.out.println(uniCode);
	}
}

출력 결과

728x90