-
[TIL #8-2][JAVA] 데이터타입CodeStates_Backend/TIL (Today I Learned) 2022. 5. 8. 14:01
코드스테이츠 백엔드 부트캠프 39기 10일차
JAVA 타입 - 기본타입 / 참조타입
기본타입 (primitive type)
데이터의 실제 값을 의미한다.
🔘 정수 타입
메모리의 용량을 아끼기 위해 4가지로 나누었지만, 요즘은 거의 int형을 많이 쓴다.
각 타입별 메모리 크기와 범위는 다음과 같다.* 1 Byte = 8 Bits
정수타입 메모리크기, 범위 나만의 [정수타입 범위계산] 룰ㅎ 정수 리터럴을 선언할 때, int형을 넘어가는 값일 때는 가장 뒤에 L을 붙여줘야 한다. 물론 L을 붙여줘도 long타입 벗어나는 값이면 오류가 발생한다.
🔘 실수 타입
- float : 4Bytes
- double : 8Bytes
float타입의 경우 리터럴 뒤에 f , double타입의 경우 리터럴 뒤에 d 를 붙여준다. 단, double타입이 실수형의 디폴트값이므로 d 를 붙이는 것을 생략할 수 있다.
실수 타입은 부동소수점 표현을 사용하는데, 이는 오차가 발생할 수 있음을 알아두자. 표현 범위가 클수록 오차가 줄어들고 이를 정밀도가 높다고 한다. 따라서 double타입이 float타입보다 정밀도가 높다.
🔘 문자 타입
- char : 2Bytes
단 하나의 문자만 저장한다. 여러개의 문자를 저장하는 String 클래스와는 다르다. 실제로는 String클래스 내부에서 결국 char를 이어붙여 사용한다고는 한다.
자바는 유니코드에 기반하여 문자를 표현한다. 문자를 변수에 대입하면 그 문자에 해당하는 정수 값(유니코드 값)이 저장되는 것이다.
🔘 논리 타입
- boolean : 1Byte
단순히 참, 거짓을 표현하므로 1bit로 가능하지만, JVM의 최소 데이터 단위가 1Byte이므로 1Byte가 됨. True 혹은 False의 값이 가능하다.
참조타입 (reference type)
데이터가 저장된 주소값을 의미하며 객체의 주소를 저장한다.
- 기본타입을 제외한 나머지 모든 타입이 참조타입이다.
- 예시
public class Main { public static void main(String[] args) { Object object = new Object(); System.out.println(object); } } //출력 결과 : java.lang.Object@35bbe5e8
출력 결과에서 @35bbe5e8 이 객체의 주소값이다.
📌 [참고] 자바는 객체 지향 언어이므로 클래스를 마치 타입과 같이 사용한다. 해당 클래스의 객체를 생성하여 사용하니까.
잠시 생각해보면 아주 당연한 말이다. String 클래스가 좋은 예가 된다.
📌 언어별 데이터타입 정리
더보기C언어 , C++
종류 데이터 타입 크기 기억 범위 문자 char 1Byte -128 ~ 127 부호없는 문자형 unsigned char 1Byte 0 ~ 225 정수 short 2Byte -32768 ~ 32767 int 4Byte -2147483648 ~ 2147438647 long 4Byte -2147483648 ~ 2147438647 long long 8Byte -9223372036854775808
~ 9223372036854775807부호없는 정수형 unsigned short 2Byte 0 ~ 65535 unsigned int 4Byte 0 ~ 4294967295 unsigned long 4Byte 0 ~ 4294967295 실수 float 4Byte 1.2 X (10의 -38제곱)
~ 3.4 X (10의 38제곱)double 8Byte 2.2 X (10의 -308제곱)
~ 1.8 X (10의 308제곱)long double 8Byte 2.2 X (10의 -308제곱)
~ 1.8 X (10의 308제곱)Java
종류 데이터 타입 크기 기억 범위 문자 char 2Byte 0 ~ 65535 정수 byte 1Byte -128 ~ 127 short 2Byte -32768 ~ 32767 int 4Byte -2147483648
~ 2147483647long 8Byte -9223372036854775808
~ 9223372036854775807실수 float 4Byte 1.4 X (10의-45제곱)
~ 3.4 X (10의 38제곱)double 8Byte 4.9 X (10의 -324제곱)
~ 1.8 X (10의 308제곱)논리 boolean 1Byte true / flase Python
종류 데이터 타입 크기 기억 범위 문자 str 무제한 무제한 정수 int 무제한 무제한 실수 float 8Byte 4.9 X (10의 -324제곱)
~ 1.8 X (10의 308제곱)complex 16Byte 4.9 X (10의 -324제곱)
~ 1.8 X (10의 308제곱)**complex
원래 영어에서 '복소수'를 'complex number'라고 하며,
즉 complex는 복소수를 의미하는 "실수" + "허수"를 의미한다.
'CodeStates_Backend > TIL (Today I Learned)' 카테고리의 다른 글
[TIL #8-4] [JAVA] 변수, 타입 변환, 연산자, 콘솔 출력 (0) 2022.05.14 [TIL #8-3][JAVA] 문자열 String (0) 2022.05.12 [TIL #8-1][Java] 자바 기초, JVM, JDK, 접근 제어자 etc.. (0) 2022.05.04 [TIL #7] Git (0) 2022.05.03 [TIL #6] Linux 기초 (0) 2022.05.02