자바의 자료형 정리 (상수/변수/자료형)
실제 프로그래밍에 사용되는 문자와 숫자 외에도 여러 가지 형식의 데이터가 존재합니다. 우선은 우리에게 익숙한 숫자와 문자를 어떻게 표시하는지 데이터형(data type 데이터 형식, 또는 자료형)을 살펴보도록 하겠습니다.
프로그래머가 프로그램 코드에 단순히 1 이라고만 기술하면 프로그램에서 2진수, 8진수, 10진수도 사용하기 때문에 11이 어떤 진수인지 알 수 없으며, 대부분의 기본자료형에 11을 넣을 수 있어 그냥 11이라고 넣으면 11이 double 상수인지 int 상수인지 long 상수인지 알 수 없을 것입니다. 이런 문제를 해결하기 위해서 11 앞뒤로 특정 기호를 넣어서 11이 어떤 진수인지 어떤 자료형 상수인지 구분할 수 있습니다.
상수란?
변하지 않는 값을 의미합니다.
예를 들어 a라는 변수에 a=1;과 같이 1이라는 값을 할당한다면 a는 편할 수 있으므로 변수입니다.
그리고 여기 1이라는 값이 상수라고 할 수 있습니다.
왜냐하면 1=2;는 성립하지 않으며 1은 변하지 않고 언제나 1이기 때문입니다.
상수는 변수와 마찬가지로 이름을 가지고 있는 메모리 공간으로, 이러한 상수는 선언과 동시에 반드시 초기화해야 합니다.
변수란?
'변'은 변할 변이며 변할 수 있는 값이라는 뜻입니다.
뒤에 나오는 수가 숫자만 의미하는 것은 아니고 모든 데이터를 의미합니다.
즉, 변수란 변할 수 있는 모든 데이터로 이해하면 될 것입니다. 모든 것을 담을 수 있는 요술주머니라고 하겠습니다.
'그', '그녀', '저것'이 가리키는 것이 정확히 정해져 있지 않고 맥락이나 상황에 따라 가리키는 대상이 달라지는 것처럼 변수 역시 같습니다.
자바에서는 변수뿐만 아니라 클래스, 메소드 등의 이름을 짓는데 반드시 지켜야 하는 공통된 규칙이 있습니다.
- 변수의 이름은 영문자(대소문자), 숫자, 언더스코어(_), 달러($)로만 구성할 수 있습니다.
- 변수의 이름은 숫자로 시작할 수 없습니다.
- 변수의 이름 사이에는 공백을 포함할 수 없습니다.
- 변수의 이름으로 자바에서 미리 정의된 키워드(keyword)는 사용할 수 없습니다.
변수의 선언방법
자바에서는 변수를 사용하기 전에 반드시 먼저 변수를 선언하고 초기화해야 하며 변수를 선언하는 방법에는 다음과 같이 두 가지 방법이 있습니다.
- 변수의 선언만 하는 방법
- 변수의 선언과 동시에 초기화하는 방법
1. 변수의 선언만 하는 방법
먼저 변수를 선언하여 메모리 공간을 할당받고, 나중에 변수를 초기화하는 방법입니다.
하지만 이렇게 선언만 된 변수는 초기화되지 않았으므로, 해당 메모리 공간에는 알 수 없는 쓰레깃값만이 들어가 있습니다.
따라서 선언만 된 변수는 반드시 초기화한 후에 사용해야만 합니다.
int i;//변수의 선언
i=20; //변수의 초기화
System.out.println(i); //결과 i=20
|
cs |
2. 변수의 선언과 동시에 초기화하는 방법
자바에서는 변수의 선언과 동시에 그 값을 초기화할 수 있습니다.
또한, 선언하고자 하는 변수들의 타입이 같다면 이를 동시에 선언할 수도 있습니다.
int num1, num2; // 같은 타입의 변수를 동시에 선언함.
double num3 = 3.14; // 선언과 동시에 초기화함.
double num4 = 1.23, num5 = 4.56; // 같은 타입의 변수를 동시에 선언하면서 초기화함.
|
cs |
정수형
숫자 0을 기준으로 양수(1,2,3,4…)와 음수(-1,-2,-3,-4…)를 정수형이라고 합니다.
byte를 쓰는지 short을 쓰는지 int를 쓰는지에 따라 해당 프로그램이 동작할 때 컴퓨터의 메모리, 즉 램이라고 하는 가장 값비싸고 가장 용량이 적은 메모리를 사용하는 크기가 달라집니다.
- int가 가장 처리 속도도 빠르고 충분히 큰 수를 표현할 수 있는 대중적인 정수형 데이터 타입
실수형
실수 역시 숫자 0을 기준으로 하며, 0과 1 사이에 사실은 무수히 많은 숫자가 존재합니다.
-1,-0.1,-0.001과 같은 숫자들이 실수입니다.
즉, 소수점이 있다면 실수이고 소수점이 없고 깔끔하게 숫자만 있다면 정수라고 할 수 있습니다.
- 실수를 사용할 때는 double데이터 타입을 사용
문자형과 문자열형
문자와 문자가 결합한 것을 문자열, 문자열을 이루는 최소 단위 하나하나를 문자라고 부릅니다.
큰따옴표를 묶으면 문자가 아닌 문자열이 됩니다.
문자가 하나밖에 없더라도 큰따옴표로 묶으면 문자열이 되기 때문입니다.
- ( ' ) 한 글자를 작은따옴표로 표시하면 문자
- ( " ) 여러 개의 문자를 결합하면 문자형
- 문자열과 문자열을 결합할 때 +연산자 사용
자료형
우리가 사용하는 1, 2, 1.2, 1.3은 모두 숫자라고 표현할 수 있지만 자바 같은 프로그래밍 언어에서는 자릿수가 있는 숫자는 전혀 다른 데이트 형식으로 처리합니다.
또한 일반적으로 가, 나, ㄱ, ㄴ와 같은 문자들도 그 형식이 완전히 다릅니다.
문자와 문자가 결합한 것을 문자열이라고 하는 것처럼 자바의 자료형은 다양하게 나누어집니다.
자료형 |
키워드 |
메모리 크기 |
기본값 |
표현 범위 |
논리형 |
boolean |
1byte |
False |
true, false 다른 언어에서는 0과 1로 표시하기도 하지만 자바에서는 사용하지 않음. 즉, 0:false 1:true
ex) System.out.println(true); System.out.println(false); |
문자형 |
char |
2byte |
‘\u0000’ |
0~65,535 ex) ‘a’,’가’, '나'
1. 문자 상수는 보통 앞뒤에 ' '를 사용하여 표시한다. 즉, System.out.println(a);는 error이다. 2.'각'이라는 문자를 화면에 출력하려면 어떻게 해야 할까? System.out.println('각'); 3. 이외에 유니코드로 출력하고 싶으면 \\u 다음에 코드를 넣으면 된다 System.out.println('\u0041'); //A로 출력 System.out.println('\u0042'); //B로 출력 |
정수형 |
byte |
1byte |
0 |
-128~127 정수형 음수, 0, 양수 |
정수형 |
short |
2byte |
0 |
-32,768~32,767 |
정수형 |
int |
4byte |
0 |
일반적으로 int형을 사용한다. byte.short, int 자료형은 int형 상수 처리한다 해당 자료형의 범위가 맞는 숫자를 넣으면 상수처리가 된다 int형 상수의 경우 소수점 없는 숫자를 범위에 맞게 기술하면 된다 System.out.println(1456323); System.out.println(032); //8진수 System.out.println(0x32); //16진수 System.out.println(100000000000);//왜 에러가 났을까? 100000000000 은 int형 상수가 아닌데 int형 상수처럼 기술하여 에러가 난 것이다. |
정수형 |
long |
8byte |
0 |
소수점이 없는 숫자에 long 숫자 범위를 벗어나지 않는 순자 끝에 소문자 l나 대문에 L을 붙이면 된다 System.out.println(100000000000L); System.out.println(100000000000l); |
실수형 |
float |
4byte |
0.0 |
소수점이 있는 수 끝에 f, F를 붙여서 표시한다 System.out.println(3.14f); System.out.println(3.14F); System.out.println(3.f); System.out.println(3f); System.out.println(3.F); System.out.println(. 14f); |
실수형 |
double |
8byte |
0.0 |
일반적으로 double를 사용한다 소수점이 있는 수는 double상수, 숫자 끝에 대문자 d, D를 넣는다 System.out.println(3.14); System.out.println(3.); System.out.println(. 14); System.out.println(3d); System.out.println(. 14D); System.out.println(3.14D); System.out.println(3.14E-4);//E표기법 |
문자열 |
String |
- |
null |
문자열 문자열 상수는 ""로 묶어서 표현한다 System.out.println("helloworld"); 1(숫자), '1'(문자), "1"(문자열) 3가지가 메모리에 올라가 있는 모양은 다르다 상수의 연산 + - * / % 숫자는 수적 연산이 된다 문자열은 + 연산만 가능하다 System.out.println(5+3);//수+수==수 System.out.println(5.1+3.2);//수+수==수 System.out.println(5+"안녕");//수+문자열==문자열 System.out.println("안녕"+"안녕");//문자열+문자열==문자열 System.out.println(5+5+"안녕");//10 안녕 System.out.println("안녕"+5+5);//안녕 55 |
클래스 |
class |
- |
null |
사용자가 정의한 자료형(작업자가 새로운 데이터를 만들었을 때 사용) |
배열 |
array |
- |
null |
자료형을 한 번에 여러 개 만들 때 사용 |
float 또는double?
부동 소수점 값의 소수점 뒤에 값이 가질 수 있는 자릿수를 나타냅니다. float변수는 소수점 이하 여섯 자리 또는 일곱 자리이며 double변수는 약 15 자리입니다. 따라서 double대부분의 계산에 사용하는 것이 더 안전합니다.
기본자료형과 참조자료형
우선 자바에는 기본자료형과 참조자료형이 있습니다.
기본자료형은 크기가 명확하고 변동이 없으나 참조자료형은 그때그때 크기가 달라지기 때문에 크기가 의미가 없습니다. 즉 값이 들어 있으면 기본자료형이고 주소가 들어 있으면 참조 자료형이 됩니다.
기본자료형
Java언어에 이미 존재하고 있는 데이터 타입입니다. 주로 간단한 데이터들입니다. (첫 글자 소문자로 시작)
- 자바 컴파일러에 의해서 해석되는 자료형
- 실제 값을 갖는 자료형으로 null값을 가질 수 없음
- 여러 형태의 타입을 미리 정의하여 제공
- boolean/ char/ byte/ short/ int/ long/ float/ double
참조자료형
여러 가지 데이터들이 모여 있는 복잡한 데이터로 기본 자료형에 비해 크기가 큽니다. (첫 글자 대문자로 시작)
- 프로그래머에 의해 만들어진 클래스를 자료형으로 전언하는 경우
- 값이 아닌 객체의 주소를 가지고 있는 자료형
- String/ class/ array