본문 바로가기

하고 싶은 거 하는 개발/Java 프로그래밍 기초

[JAVA] 자바(JAVA) 데이터 타입(Data Type, 자료형)과 변수(Variable)에 대하여

728x90

 

 

데이터 타입(Data Type, 자료형)과 변수(Variable)

 

프로그래밍에 사용되는 데이터 타입은 크게 숫자 형과 문자 형이 있습니다. 프로그래밍에 입문하신 분이라면 익숙하실 겁니다.

이클립스(Eclipse)에서 직접 콘솔에 출력해보며 데이터 타입에 대해 알아보겠습니다.

 

혹시 자바나 이클립스를 아직 설치하지 않으신 분이라면 아래 포스팅 참조하시기 바랍니다.

 

2020/11/04 - [하고 싶은 거 하는 개발/Java 프로그래밍 기초] - [JAVA] 자바(JAVA) 설치 및 환경변수 설정

 

2020/11/04 - [하고 싶은 거 하는 개발/Java 프로그래밍 기초] - [JAVA] 이클립스(Eclipse) 설치 및 실행(Hello world! 출력하기) + Build path 오류 제거

 

 

이클립스를 실행 후 아래와 같이 작성 후에 Run을 합니다.

 

System.out.println(1);

 

그럼 콘솔에 아래와 같이 출력되는 것을 보실 수 있습니다.

 

 

 

다음은 아래와 같이 작성 후 Run을 합니다.

 

System.out.println(3+1);

 

콘솔에 4가 출력되었습니다.

 

 

 

 

자바에서는 따옴표(")가 없는 숫자는 그대로 숫자로 인식합니다. 그래서 3+1을 했을 때 숫자를 그대로 인식해 1과 3을 더해 4라는 값이 출력된 것입니다.

 

빼기(-), 곱하기(*), 나누기(/) 또한 동일합니다.

 

System.out.println(6+3);
System.out.println(6-3);
System.out.println(6*3);
System.out.println(6/3);

 

결과는 아래와 같이 출력됩니다.

 

 

 

이번엔 문자 형을 출력해보도록 하겠습니다. 

아래와 같이 작성 후 Run합니다.

 

System.out.println('글');
System.out.println("글");

 

아래와 같이 출력되었습니다. 

 

 

 

콘솔에 [글]이라는 문자가 2번 출력되었습니다. 동일한 결과인데 왜 굳이 2번 출력되게 했을까요? 

 

자바는 문자(Character)와 문자열(String)을 구분합니다. 문자는 작은 따옴표(')로 감싼 한 글자를 의미하고, 문자열은 큰 따옴표(")로 감싼 문자들의 겹합을 의미합니다. 

 

작음 따옴표(')로 아래와 같이 두 글자를 감싸 출력하면 어떻게 될까요? 

System.out.println('글자');

 

콘솔에 [글자]가 출력되는 대신, 오류가 출력되었습니다. 

 

 

아무런 글자 없이 작음 따옴표만 입력해도 동일한 오류가 출력됩니다.

 

System.out.println('');

 

 

이번엔 문자열을 출력해보도록 하겠습니다.

 

System.out.println("");
System.out.println("글");
System.out.println("글자");
System.out.println("6+3");

 

 

큰 따옴표(")는 아무 글자를 입력하지 않아도, 한 글자를 감싸도 에러가 발생하지 않습니다.

어느 것도 문자열이 될 수 있기 때문입니다. 

6+3의 경우, 큰 따옴표(")로 감쌌기 때문에 문자열로 인식되어 9가 아닌 6+3이 그대로 출력되는 것을 볼 수 있습니다. 

 


숫자 형과 문자 형에 대해서 감이 오셨나요? 그럼 이제 변수와 함께 더 자세히 알아보겠습니다

 

 

변수란 자바에서 데이터(Data)를 저장할 수 있는 메모리 공간을 의미합니다.

데이터? 메모리? 

갑자기 등장한 용어에 헷갈리신다면 변수는 무언가를 담는 컨테이너라고 생각하시면 됩니다. 

컨테이너에는 숫자 형이 담길 수도 있고, 문자 형이 담길 수도 있습니다.

 

1이라는 정수 혹은 3.14와 같은 실수를 컨테이너에 담기 위해서는 어떻게 해야할까요? 

 

자바에서는 정수를 담기 위한 데이터 타입 4개, 실수를 담기 위한 데이터 타입 2개의 종류를 정의했습니다.

 

[정수]

데이터 타입 메모리 크기
byte 1 byte
short 2 byte
int 4 byte
long 8 byte

 

[실수]

데이터 타입 메모리 크기
float 4 byte
double 8 byte

 

정수 1을 데이터 타입 int에 저장하고 출력해보겠습니다. 

 

자바에서는 변수를 사용하기 전에 반드시 먼저 변수를 선언하고 초기화 해야합니다. 

 

변수를 선언하는 방법엔 2가지가 있습니다. 

1. 변수를 선언만 하고 후에 초기화하는 법.

2. 변수의 선언과 초기화를 동시에 하는 법.

 

 

//1. 변수의 선언 후 초기화 
int a; // 변수의 선언
a = 1; // 변수 값할당(초기화)

System.out.println(a);

//2. 변수의 선언과 초기화를 동시에
int b = 2;
System.out.println(b);

 

 

변수 a와 b에 각각 정수 1과 정수 2가 저장되었기에 1과 2가 출력되었습니다. 

 

 

만약 정수 형 데이터 타입 int에 실수인 3.14를 저장하고 출력하려고 하면 어떻게 될까요?

 

int a = 3.14;
System.out.println(a);

 

 

Type mismatch 오류가 발생했습니다. 

 

정수 형 데이터 타입인 int에 실수인 3.14를 저장하려 했기에 오류가 발생한 것입니다.

정수 형 데이터 타입에는 정수만, 실수 형 데이터 타입에는 실수만 저장할 수 있습니다. 

 

자바에는 문자 형을 위한 데이터 타입 또한 존재합니다. 

 

 

[문자]

데이터 타입 메모리 크기
char 2 byte
char a = 'a';
System.out.println(a);

 

 

자바에서는 문자와 문자열이 다르고 했습니다. 글자 하나인 문자는 char 형을 사용해 변수를 선언했습니다. 그렇다면 문자의 집합인 문자열은 어떻게 사용해야 할까요?

 

String a = "aaa";
System.out.println(a);

 

문자열은 String을 사용하면 됩니다. 위의 String 변수 a는 현재 몇 byte를 차지하고 있을까요? char 형이 2 byte였으므로 "aaa" 세 글자인 String 형 변수 a는 6 byte를 차지하고 있습니다.

 

정리하자면 아래와 같습니다. 

		int a; //변수의 선언 정수형 int
		a = 1; //변수의 초기화
		int b = 2; // 변수의 선언과 초기화를 동시에
		double c = 3.14; //실수형 double
		char d = 'd'; // 문자형 char;
		String e = "ddddd"; //문자열 String		
		
		System.out.println("정수 형 데이터 타입 int " + a);
		System.out.println("정수 형 데이터 타입 int " + b);
		System.out.println("실수 형 데이터 타입 double " + c);
		System.out.println("문자 형 데이터 타입 char " + d);
		System.out.println("문자열 String " + e);

 

 


 

데이터 타입과 변수에 대해 알아보면서 byte가 무엇인지 궁금하지 않으셨나요? 

 

컴퓨터에 저장되는 정보의 가장 작은 단위는 bit입니다. 컴퓨터는 0과 1로 이루어졌다는 말을 들어보신 적 있으실 겁니다. 바로 이 0과 1이 bit입니다. 1 bit는 0이나 1의 값을 가질 수 있습니다.(이진수) 

 

이 bit가 8개가 보이면 8 bits = 1byte입니다.

즉, 1 byte는 8 bits로 byte는 bit보다 8배 큰 단위입니다. 

따라서 1 byte는 2^8개의 숫자를 표현할 수 있습니다.

 

그렇다면 정수 형과 실수 형 데이터 타입의 표현 가능 범위는 어떻게 될까요?

답은 아래와 같습니다. 

 

[정수]

데이터 타입 메모리 크기 범위
byte 1 byte -128 ~ 127
short 2 byte -32,768 ~ 32,767
int 4 byte -2,147,483,648~2,147,483,647
long 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

 

[실수]

데이터 타입 메모리 크기 범위
float 4 byte ±(1.40129846432481707e-45 ~ 3.40282346638528860e+38)
double 8 byte ±(4.94065645841246544e-324d ~ 1.79769313486231570e+308d)

 

추가적으로, 정수를 저장할 때는 int를, 실수를 저장할 때는 double을 주로 사용합니다.

int와 double은 충분히 큰 수를 표현할 수 있는 데이터 타입이고, int를 사용할 경우 cpu의 처리 속도가 빠릅니다. 

 

 

반응형