이번 글에선 자바의 자료형에 대해서 알아보도록 하겠습니다.
변수의 형태를 나타내는 자료형
이전 글에서 변수는 물건을 담는 상자에 비유했었습니다.
그런데 여러분이 이 상자에 물건을 담으려면 물건에 알맞은 상자, 용기의
크기와 형태를 알맞게 정해주셔야 하겠죠?
예를 들어 종이상자에 물을 담을 수는 없을것입니다.
물은 다 흐르고 상자는 모두 젖어버릴 것이기 떄문이죠.
따라서 물을 담기 위해선 그에 맞게 유리병과 같은 용기를 지정해주셔야 한다는 겁니다.
데이터도 똑같은데, 데이터의 크기, 종류 등에 맞춰변수의 형태를 지정해주셔야 합니다.
이 형태를 자료형이라고 부르고, 자바에선 자료형들을 크게 두 가지로 분류합니다.
1. 기본형(Primitive type)
-boolean, char, byte, short, int, long, float, double
계산을 위한 실제 값을 저장합니다.
2. 참조형(Reference type)
-8개의 기본형을 제외한 나머지 타입, 객체의 주소를 저장한다.
기본형의 경우 총 8개로 이루어져 있고, 참조형의 경우엔 프로그래머가 직접 만들어서
추가할 수 있기 때문에, 따로 수가 정해져 있지는 않습니다.
참조형 변수(또는 참조 변수)를 선언할 때는 자료형으로 클래스의 이름을 사용하는데,
새로운 클래스를 작성한다는 것은 새로운 참조형을 추가하는 셈이 됩니다.
무슨 뜻인지 지금은 잘 모르실 텐데, 추후에 클래스와 객체에 대해 더 자세히 알게 되면 이해가 될 겁니다.
8개의 기본 자료형
위에서 말했다시피 기본 자료형은 총 8개의 자료형이 있으며, 이후에 다시 4가지 종류로 나뉩니다.
아래의 표를 보고 어떤 자료형이 있는지 확인해봅시다.
자료형의 크기는 byte단위로 표현하고, 1byte는 8bit로서 0 ~ 2^8 - 1까지의 숫자를 표현할 수 있습니다.
하지만 최상위 비트(MSB)를 부호 비트로 사용하기 때문에 -(2^7) ~ 2^7 - 1까지의 숫자를 표현합니다.
(2^7 = 2의 7승, 2^8 = 2의 8승을 이야기하는 것입니다.)
위의 표가 각 자료형들이 실제로 표현할 수 있는 값의 범위인데,
이를 외울 순 없으니 한 번 보시기만 하고 크기는 byte단위로 기억해두시고,
자신이 저장하려는 데이터의 크기에 맞춰서 적절하게 자료형을 사용하도록 합시다.
그럼 이제 각 자료형들을 구체적으로 설명해보도록 하겠습니다.
논리형 boolean
논리형은 기본적으로 boolean하나뿐이며 값은 true와 false만을 표현할 수 있습니다.
논리형 변수는 아래와 같이 선언할 수 있습니다.
boolean isTrue = false;
또한 값을 두 가지만 표현하기 때문에 가장 작은 1byte로 자바에서 사용합니다.
별로 어렵지 않을 거라 생각하기 때문에 바로 넘어가도록 하겠습니다.
문자형 char, 문자열 String
자바의 문자형 또한 char하나뿐입니다.
C언어를 배우신 분이라면 아실 텐데, C언어에선 char형은 1byte이며 아스키코드를 사용합니다.
반면 자바에서는 유니코드를 사용하기 때문에 char형의 크기는 2byte로 사용합니다.
유니코드에 대한 자세한 설명은 아래의 링크를 참조하시길 바랍니다.
https://namu.wiki/w/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C
문자형 변수의 선언 방법은 아래와 같습니다.
char ch = 'A';
char형 변수에는 기본적으로 하나의 문자를 저장할 수 있으며, 작은따옴표(')로 문자를 묶습니다.
char형은 총 65536개의 코드를 사용할 수 있는데, 이 코드들이 각각 한 문자와 대응됩니다.
예를 들어 'A'라는 char형 변수를 int(정수형)로 형 변환하면 값은 65가 출력되는데,
따라서 우리는 'A'라는 문자가 유니코드에서 10진수 65와 대응된다는 것을 알 수 있습니다.
형 변환은 어떤 자료형을 다른 자료형으로 바꾸는것인데, 추후에 자세히 설명하겠습니다.
public class example{
public static void main(String[] args){
char ch = 'A';
int in = 65;
System.out.print(ch + "\n");
System.out.print((int)ch + "\n");
System.out.print(in + "\n");
System.out.print((char)in + "\n");
}
}
또한 영어 말고도 여러 언어, 줄 바꿈, 스페이스, 백스페이스 등도 표현이 가능한데
이에 대해 표로 한 번 몇 가지 확인해보도록 하겠습니다.
그런데 이렇게 하나의 문자만 저장할 수 있으면, 여러모로 불편함이 많을 것 같지 않나요?
그래서 자바에선 문자열을 저장할 수 있는 String이란 것을 제공합니다.
String은 자바에서 기본적으로 제공하는 클래스, 즉 참조 변수이며 사용법은 다음과 같습니다.
String name = "HongGilDong"
문자열의 경우엔 큰따옴표(")로 묶어주게 됩니다.
또한 문자열은 덧셈 연산자를 사용해서 여러 개의 문자열을 결합할 수도 있습니다.
예를 들면 다음과 같이 말이죠.
public class example{
public static void main(String[] args){
String name = "HongGilDong";
System.out.print(name + "\n");
name = name + "Java";
System.out.print(name + "\n");
}
}
위 코드에선 name이란 String변수를 초기화하고 후에 Java라는 문자열을 붙였습니다.
이 덧셈으론 문자열과 문자열뿐만 아니라 다른 자료형도 결합할 수 있습니다.
이때 문자열이 아닌 자료형들은 자동으로 문자열로 바뀌어서 결합됩니다.
public class example{
public static void main(String[] args){
String name = "HongGilDong";
int a = 18468850;
System.out.print(name + "\n");
name = name + a;
System.out.print(name + "\n");
}
}
위와 같이 int a의 값이 문자로 변형되어서 name변수 뒤에 붙어 결합된 것을 볼 수 있습니다.
문자형의 설명은 이만 마치고, 다음은 정수형에 대해서 설명하도록 하겠습니다.
정수형 byte, short, int, long
정수형은 말 그대로 정수형 숫자를 표현하는 자료형입니다.
정수형은 총 4개의 종류가 있으며 크기에 따라 종류가 나뉩니다.
byte = 1, short = 2, int = 4, long = 8과 같이 byte부터 순서대로 크기가 2배씩 증가합니다.
정수형의 기본 자료형은 int인데, 여러분이 코드에서 변수가 아닌 상수 10을 사용하게 되면,
이는 기본적으로 int자료형의 숫자라는 것입니다.
확인해보면 위와 같이 상수를 사용해서 int의 최댓값을 넘는 숫자를 출력하려고 했을 때,
출력하려는 값이 int의 범위를 넘어간다 오류가 메시지가 표시됩니다.
정수형의 선언과 초기화는 다음과 같이 할 수 있습니다.
byte b = 1;
short s = 10;
int in = 100
long lo = 1000000L;
여기서 주의해야 할 점은 long자료형의 리터럴끝에는 꼭 L을 붙어주어야 한다는 점입니다.
또한 정수형 변수에는 10진수 이외에도 8진수, 16또한 변수에 저장할 수 있는데,
8진수의 경우 값의 앞에 접두사 '0'을 붙이고, 16진수는 '0x'또는 '0X'를 붙여서 저장할 수 있습니다.
당연히 저장할 수 있는 데이터의 크기는 변하지 않습니다. (0은 영어가 아닌 숫자입니다.)
public class example{
public static void main(String[] args){
int octNum = 010;
int hexNum = 0x10;
System.out.print("octNum의 값 : " + octNum + ", hexNum의 값 : " + hexNum);
}
}
각 변수의 10진수값을 출력해보면 8진수 10 = 8, 16진수 10 = 16인 것을 확인 가능합니다.
이와 같이 정수형 변수엔 10진수, 8진수, 16진수등을 모두 저장할 수 있습니다.
이번 글에선 자바의 자로형 몇가지를 알아봣는데, 아직 내용이 더 남아있습니다.
이번 글은 여기서 마치고, 다음 글에서 이어서 설명하도록 하겠습니다.
감사합니다.
'프로그래밍 언어 > 자바' 카테고리의 다른 글
자바 5. 형변환 (0) | 2020.08.07 |
---|---|
자바 4. 자료형-2 (0) | 2020.08.06 |
자바 2. 변수와 상수 (0) | 2020.08.03 |
자바 1. 개발 툴 설치 (0) | 2020.07.30 |
자바 개요 (0) | 2020.07.29 |