#변수의 타입
자바 변수의 타입에는 기본형(Primitive Type), 참조형(Reference Type)이 있다.
기본형은 정수타입, 실수타입, 논리타입으로 분류된다.
기본형에는 총 8개의 타입이 있다.
- 정수타입 : byte, char, short, int, long
- 실수타입 : float, double
- 논리타입 : boolean
참조형에는 총 4개가 있다.
- 배열(Array)
- 열거형(Enum)
- 클래스(Class)
- 인터페이스(Interface)
정수(Integer)란?
정수란 소수나 분수가 없는 수의 집합으로, 양의 정수(자연수), 음의 정수, 0이 있다.
정수는 수학에서 가장 기본적인 수의 개념 중 하나로, 우리가 일상에서 숫자를 셀 때 사용하는 양의 정수(예: 1, 2, 3...)와 온도 등에서 사용하는 음의 정수(예: -1, -2, -3...)로 나뉜다.
byte 타입
- 메모리 사용 크기 : 1byte(8bit)
- 저장값 범위 : -27 ~ (27 - 1) / -128 ~ 127
- 저장값 범위 계산 방법 : -2(n-1) ~ 2(n-1)-1, n은 비트
byte 타입 실습 예제
line 12 주석을 해제하면 변수의 범위를 넘어갔기 때문에 Type missmatch 오류가 발생한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package j241002;
public class J101_PrimitiveType_Byte {
public static void main(String[] args) {
byte by1 = -128;
byte by2 = -100;
byte by3 = 0;
byte by4 = 100;
byte by5 = 127;
//byte var6 = 128;
System.out.println(by1);
System.out.println(by2);
System.out.println(by3);
System.out.println(by4);
System.out.println(by5);
//System.out.println(by6);
/*
Description Resource Path Location Type
Type mismatch: cannot convert from int to byte ---.java /---/---/--- line 12 Java Problem
*/
}
}
|
cs |
char 타입
- 메모리 사용 크기 : 2byte(16bit)
- 저장값 범위 : 0 ~ 216 - 1 / 0 ~ 65535
char 타입 예제
char는 '( Singe Qoutation Mark, 홑따옴표)를 사용하여 문자를 저장하고 n진수로 변환된 값도 저장가능하다.
Character는 사전적인 의미로 문자, 기호를 뜻하는데 왜 정수타입인가 이상함을 느낄 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package j241002;
public class J101_PrimitiveType_Char {
public static void main(String[] args) {
char c11 = 'A'; // 문자
char c22 = 65; // 10진수
char c33 = '\u0041'; // 16진수
char c44 = '가';
char c55 = 44032;
char c66 = '\uac00';
System.out.println(c11);
System.out.println(c22);
System.out.println(c33);
System.out.println(c44);
System.out.println(c55);
System.out.println(c66);
}
}
|
cs |
문자(character) 컴퓨터 내부에서는 숫자(정수)로 인코딩되어 처리되기 때문이라고 볼 수 있다.
작은 따옴표로 감싼 형태를 문자 리터럴이라고 하고 유니코드로 변환되어 저장이 된다.
각 문자, 기호에 대응되는 고유한 정수값이 있기때문에 문자도 숫자처럼 저장되고 연산될 수 있다.
예를 들어 'A' + 1을 수행하면 66이 되어 문자 'B'로 변환된다.
※ 유니코드에 대해서는 추후 작성.
int 타입
- 메모리 사용 크기 : 4byte(32bit)
- 저장값 범위 : -231 ~ (231 - 1) / -2,147,483,648 ~ 2,147,483,647(약20억)
- 저장값 범위 계산
210 = 1024 ≒ 103
231
= 210 x 210 x 210 x 2
= 1024 x 1024 x 1024 x 2
≒ 2 x 109
int 타입 예제
10진수 뿐만 아니라 2, 8, 16진수 저장도 가능하다.
개발자에 의해 직접 입력된 값을 리터럴(literal)이라고 하며 리터럴 중 정수로 인식되는 경우는 다음과 같다.
- 2진수(Binary) : Ob, 0B로 시작 / 0과 1로 구성
- 8진수(Octal) : 0부터 시작, 0~7로 구성
- 10진수(Decimal) : 0~9 로 구성
- 16진수(Hexadecimal) : 0x, 0X로 시작 0~9로 구성되며 그 이상부터는 A(10),B(11),C(12),D(13),E(14),F(15)
※ 16진수는 웹에 색상(ex. #000000), 메모리주소(ex. 0x7fff) 등에 사용
※ 진법 변환에 관해서는 추후 작성.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package j241002;
public class J101_PrimitiveType_Int {
public static void main(String[] args) {
int var1 = 0b1001; // 2진수
int var2 = 0206; // 8진수
int var3 = 111; // 10진수
int var4 = 0xAF; // 16진수
System.out.println("2진수 : " + var1);
System.out.println("8진수 : " + var2);
System.out.println("10진수 : " + var3);
System.out.println("16진수 : " + var4);
}
}
|
cs |
\
long 타입
- 메모리 사용 크기 : 8byte(64bit)
- 저장값 범위 : -263 ~ (263 - 1) / -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
long 타입 예제
int의 범위를 초과할 경우 long을 사용
정수 리터럴 뒤 l, L을 추가(대문자 권장)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package j241002;
public class J101_PrimitiveType_Long {
public static void main(String[] args) {
//long var1 = 12345678912;
long var2 = 12345678912L;
//System.out.println(var1);
System.out.println(var2);
}
}
|
cs |
float 타입
- 메모리 사용 크기 : 4byte(32bit)
- 저장값 범위 : (1.4 x 10^-45) ~ (3.4 x 10^38)
- 정밀도 : 소수점 이하 약 7자리(6~9)
double 타입
- 메모리 사용 크기 : 8byte(64bit)
- 저장값 범위 : (4.9 x 10^-324) ~ (1.8 x 10^308)
- 정밀도 : 소수점 이하 약 15자리(15~18)
※ float 보다 약 2배정도 정밀도가 높아서 double
float, double 정밀도 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package j241002;
public class J101_RealNumber_FloatDouble {
public static void main(String[] args) {
// 실수값 저장
//float var1 = 3.14; // type mismatch
float var2 = 3.14f;
double var3 = 3.14; // float 보다 약 2배정도 정밀도가 높아서 double
// 정밀도 테스트
float var4 = 0.1234567890123456789f;
double var5 = 0.1234567890123456789;
//System.out.println(var1);
System.out.println(var2);
System.out.println(var3);
System.out.println(var4);
System.out.println(var5);
}
}
|
cs |
boolean 타입
- True, False를 저장하는 논리형 변수
- 참, 거짓에 따라 조건문, 제어문의 흐름을 변경한다.
- 불리언, 불린 등으로 불린다
boolean 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package j241002;
public class J101_PrimitiveType_Boolean {
public static void main(String[] args) {
boolean flag = false;
boolean isRun = true;
System.out.println(flag);
System.out.println(isRun);
}
}
|
cs |