Java | Data Type 자료형
Data Type 자료형
컴퓨터에게 어떤 데이터를 얼마만큼의 크기로 저장할 것인가를 지정해주는 것
문자열, 숫자, 논리적인 값 8가지가 있음
↔ JavaScript 에서는 변수 선언시 자료형을 지정하지 않음(TypeScript에서는 함)
정수 자료형
종류 | 설명 |
---|---|
byte | 저장공간 크기 1byte, (-127 ~ +128)만 저장 가능 자바의 기본 데이터 전송 단위, ex) 채팅 프로그램 데이터 전송 |
short | 저장공간 크기 2byte, (-32768 ~ +32767) 저장 가능 |
int | 저장공간 크기 4byte, (-2147483648 ~ +2147483647) 저장 가능 자바의 기본 연산 단위(+, -, * , / 산술연산) 형변환과 연관 |
long | 저장공간 크기 8byte, 데이터를 long형으로 저장하기 위해서는 저장하는 값 뒤에 L or l을 써줘야 함 |
사용례
public class VarTest {
public static void main(String[] args) {
byte b = 23;
//변수 b를 선언하면서 23값을 저장
short c = 12;
//byte로도 저장할 수 있는 숫자를 short로 저장하면 메모리 낭비 발생
int sum = b + c;
/* b + c = 35이므로 byte에도 충분히 담길 수 있지만,
b + c 에서 산술연산자가 사용되고 있고
java의 기본 연산 단위는 int이기 때문에
int 자료형을 사용해야 함 */
long num = 1234567890000L;
/* int 저장 범위를 넘어서는 수이기 때문에 long형으로 저장해야함
long형으로 저장하기 위해서 숫자 마지막에 L을 작성 */
}
}
※ 산술연산자를 사용할 때에는 꼭 int 자료형 사용 !!
※ 예제에서는 변수의 사용을 생략했는데, 변수를 선언만 하고 사용하지 않으면
이클립스에서 사용되지 않는 변수라는 알림을 표시해줌
※ Type mismatch ERROR
변수의 자료형과 맞지 않는 값을 저장했을 때 발생하는 에러
실수 자료형
종류 | 설명 |
---|---|
float | 저장공간 크기 4byte 실수를 float형에 저장하기 위해서는 숫자 마지막에 F or f를 작성해야 함 소수점 일곱 번째 자리까지 저장 가능 float f = 5.3 X, float f = 5.3F O |
double | 저장공간 크기 8byte 자바의 기본 실수 저장 자료형, double d = 5.3 O |
※ 정수자료형 / 실수자료형 데이터 저장 공간 크기 비교
byte 1 < short 2 < int 4 < long 8 < float 4 < double 8
float, double은 소수점 이하의 수를 가지기 때문에 long보다 float의 저장 공간이 더 큼
※ 5.3이 float에 저장되지 못하는 이유
자바에서 실수는 기본적으로 double형으로 저장되는데
double이 float보다 큰 값을 다루기 때문에 float에 5.3을 바로 저장할 수 없음
→ float f = 5.3F 로 작성해야 함
사용례
public class VarTest2 {
public static void main(String[] args) {
// 실수값 저장
float f = 5.3F;
double f2 = 5.3;
System.out.println("f값: "+f+", f2값: "+f2);
// f값: 5.3, f2값: 5.3
// float, double 차이점
float m_float = 123456.789123F;
double m_double = 123456.789123;
System.out.println("m_float 값: "+m_float+", m_double 값: "+m_double);
// m_float 값: 123456.79, m_double 값: 123456.789123
}
}
※ float 자료형에는 소수점 두 번째 자리까지만 저장 가능
BOOLEAN 논리형
true / false 값을 저장할 수 있는 자료형
저장공간 크기 1byte
public class VarTest3 {
public static void main(String[] args) {
boolean b = true; // 소문자만 입력
boolean c = 2>3; // 관계연산자로 true/false값 저장 가능
System.out.println("b값: "+b+", c값: "+c);
// b값: true, c값: false
}
}
문자 자료형
종류 | 설명 |
---|---|
char | 저장공간 크기 2byte character의 준말, '문자 하나' 저장 ' '(작은 따옴표) 사용 |
String | 여러 개의 문자로 이루어진 '문자열' 저장 " "(큰 따옴표) 사용 String은 자바의 기본자료형이 아님, 참조형(reference) 또는 클래스형이라고 함 → 기본 자료형 8가지에 포함되지 않음 |
↔ JavaScript는 ' ', " " 구분 X
ASCII 코드
(American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)
컴퓨터는 문자를 인식할 수 없기 때문에 문자를 숫자로 변환하기 위해 만들어진 코드
- 0 ~ 255로 알파벳, 특수문자 등 가장 기본적인 문자 표현 가능
- A => 65, B => 66 ,,,
- a => 97, b => 98 ,,,
- 16진수 '\u0000'~'\uFFFF' 표기 가능
ex) 10진수 : 45 → 8진수 : 045, 16진수 0x45
※ 문자 인코딩(Encoding) : 문자를 정해진 코드 값으로 변환하는 것
문자 디코딩(Decoding) : 코드 값을 문자로 변환하는 것
UNICODE 유니코드
전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준
유니코드 협회(Unicode Consortium)가 제정
- 비영어권 사람들이 자기 나라 언어로 개발 가능하도록 설계된 코드
- 한글 및 다른 언어를 사용할 수 있음
- 0 ~ 65535 로 여러가지 언어 표현 가능
문자열 결합 +
문자열과 문자열을 연결할 때 +연산자를 사용하면 두 문자열을 합칠 수 있음
ex) "ab" + "cd" = "abcd"
사용례
public class VarTest3 {
public static void main(String[] args) {
char d = 'A';
char d2 = 65;
// 아스키값으로도 문자 표현 가능, char 자료형에 담긴 숫자는 문자의 코드 값을 뜻함
char d3 = '\u0041';
/* 16진수 값을 입력 받아서 문자 저장, '\u0000'~'\uFFFF'로 표기
10진수 : 45, 8진수 : 045, 16진수 0x45 */
System.out.println("d값: "+d+", d2값: "+d2+", d3값: "+d3);
// d값: A, d2값: A, d3값: A
String s1 = "식별자 자바기초 문법";
String s2 = "변수, 자료형, 연산자";
String s3 = s1 + "" + s2;
System.out.println("s3: "+s3);
// s3: 식별자 자바기초 문법 변수, 자료형, 연산자
}
}
Java에서 변수를 저장할 때는 변수에 담기는 데이터의 자료형을 꼭 지정해주어야 합니다.
10버전부터는 자료형을 구분하지 않는 var도 지원한다고 하지만
자료형을 정확히 지정해주어야 저장공간이 낭비되지 않고
여러 사람과 코드를 공유할 때 변수의 가독성을 높일 수 있습니다.