변수는 값을 저장하기 위해 메모리에 적용됩니다. 즉, 변수를 생성할 때 메모리 공간을 신청해야 합니다.
메모리 관리 시스템은 변수의 유형에 따라 저장 공간을 할당하며, 할당된 공간은 해당 유형의 데이터를 저장하는 데에만 사용할 수 있습니다.
따라서 다양한 유형의 변수를 정의하여 정수, 소수, 문자 등을 메모리에 저장할 수 있습니다.
Java의 두 가지 주요 데이터 유형:
내장 데이터 유형
참조 데이터 유형
Java 언어는 8가지 기본 유형을 제공합니다. 6개의 숫자 유형(4개의 정수, 2개의 부동 소수점 유형), 문자 유형 및 부울 유형.
바이트 유형:
바이트 데이터 유형은 2의 보수로 표현되는 8비트 부호 있는 정수입니다.
최소값은 -128(-2^7)입니다.
최대값은 127(2^7-1)입니다.
기본값은 0입니다.
byte 유형은 큰 배열에서 공간을 절약하는 데 사용되며 주로 정수를 대체합니다. byte 변수는 int 유형 공간의 1/4만 차지하기 때문입니다.
예: 바이트 a = 100, 바이트 b = -50.
짧은 유형(짧은 정수 유형):
짧은 데이터 유형은 16비트 부호 있는 2의 보수 정수입니다.
최소값은 -32768(-2^15)입니다.
최대값은 32767(2^15 - 1)입니다.
Short 데이터 유형은 바이트와 같은 공간을 절약할 수도 있습니다. 짧은 변수는 int 유형 변수가 차지하는 공간의 절반입니다.
기본값은 0입니다.
예: 짧은 s = 1000, 짧은 r = -20000.
int 유형(정수 유형):
int 데이터 유형은 2의 보수로 표현되는 32비트 부호 있는 정수입니다.
최소값은 -2,147,483,648(-2^31)입니다.
최대값은 2,147,483,647(2^31 - 1)입니다.
일반적으로 정수 변수의 기본 유형은 int입니다.
기본값은 0입니다.
예: int a = 100000, int b = -200000.
long(긴 정수 유형):
Long 데이터 유형은 2의 보수로 표현되는 64비트 부호 있는 정수입니다.
최소값은 -9,223,372,036,854,775,808(-2^63)입니다.
최대값은 9,223,372,036,854,775,807(2^63 -1)입니다.
이 유형은 큰 정수를 비교해야 하는 시스템에서 주로 사용됩니다.
기본값은 0L입니다.
예: 긴 a = 100000L, 긴 b = -200000L.
float(단정밀도 부동 소수점 유형):
float 데이터 유형은 IEEE 754 표준을 준수하는 단정밀도, 32비트 부동 소수점 숫자입니다.
float는 큰 부동 소수점 배열을 저장할 때 메모리 공간을 절약할 수 있습니다.
기본값은 0.0f입니다.
부동 소수점 숫자는 통화와 같은 정확한 값을 나타내는 데 사용할 수 없습니다.
예: float f1 = 234.5f.
double(이중 정밀도 부동 소수점 유형):
double 데이터 유형은 배정밀도, 64비트, IEEE 754 호환 부동 소수점 숫자입니다.
부동 소수점 숫자의 기본 유형은 double입니다.
double 유형은 통화와 같은 정확한 값을 나타낼 수도 없습니다.
기본값은 0.0d입니다.
예: 더블 d1 = 123.4.
부울:
부울 데이터 유형은 1비트의 정보를 나타냅니다.
true와 false라는 두 가지 값만 있습니다.
이 유형은 참/거짓 상황을 기록하기 위한 플래그로만 사용됩니다.
기본값은 false입니다.
예: 부울 1 = true.
char(문자 유형):
char 유형은 단일 16비트 유니코드 문자입니다.
최소값은 'u0000'(즉, 0)입니다.
최대값은 'uffff'(즉, 65,535)입니다.
char 데이터 유형은 모든 문자를 저장할 수 있습니다.
예: 문자 = 'A'.
기본 유형의 숫자 유형의 값 범위에 대해서는 해당 값이 해당 래퍼 클래스에 상수 형식으로 정의되어 있으므로 강제로 기억할 필요가 없습니다. 다음 예를 참조하세요.
공개 클래스 PrimitiveTypeTest {
공개 정적 무효 메인(String[] args) {
// 바이트
System.out.println("기본 유형: 바이트 이진수: " + Byte.SIZE);
System.out.println("패키징 클래스: java.lang.Byte");
System.out.println("최소값: Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("최대값: Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// 짧은
System.out.println("기본 유형: 짧은 이진수: " + Short.SIZE);
System.out.println("패키징 클래스: java.lang.Short");
System.out.println("최소값: Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("최대값: Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// 정수
System.out.println("기본 유형: int 이진수: " + Integer.SIZE);
System.out.println("패키징 클래스: java.lang.Integer");
System.out.println("최소값: Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("최대값: Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// 긴
System.out.println("기본 유형: long 이진수 수: " + Long.SIZE);
System.out.println("패키징 클래스: java.lang.Long");
System.out.println("최소값: Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("최대값: Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// 뜨다
System.out.println("기본 유형: float 이진수 수: " + Float.SIZE);
System.out.println("패키징 클래스: java.lang.Float");
System.out.println("최소값: Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("최대값: Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
//더블
System.out.println("기본 유형: 두 배의 이진수: " + Double.SIZE);
System.out.println("패키징 클래스: java.lang.Double");
System.out.println("최소값: Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("최대값: Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// 문자
System.out.println("기본 유형: char 이진수: " + Character.SIZE);
System.out.println("패키징 클래스: java.lang.Character");
// 문자 형식이 아닌 숫자 형식으로 Character.MIN_VALUE를 콘솔에 출력합니다. System.out.println("최소값: Character.MIN_VALUE="
+ (int) 문자.MIN_VALUE);
// 문자 형식이 아닌 숫자 형식으로 Character.MAX_VALUE를 콘솔에 출력합니다. System.out.println("최대값: Character.MAX_VALUE="
+ (int) 문자.MAX_VALUE);
}
}
위 코드를 컴파일한 결과는 다음과 같습니다.
기본 유형: 바이트 2진수: 8
래핑 클래스: java.lang.Byte
최소값: Byte.MIN_VALUE=-128
최대값: Byte.MAX_VALUE=127
기본형 : 단형 2진수 : 16
래핑 클래스: java.lang.Short
최소값: Short.MIN_VALUE=-32768
최대값: Short.MAX_VALUE=32767
기본 유형: int 이진수: 32
래핑 클래스: java.lang.Integer
최소값: Integer.MIN_VALUE=-2147483648
최대값: Integer.MAX_VALUE=2147483647
기본형 : long 이진수 : 64
래핑 클래스: java.lang.Long
최소값: Long.MIN_VALUE=-9223372036854775808
최대값: Long.MAX_VALUE=9223372036854775807
기본 유형: float 이진수 수: 32
래핑 클래스: java.lang.Float
최소값: Float.MIN_VALUE=1.4E-45
최대값: Float.MAX_VALUE=3.4028235E38
기본형 : 2진수 : 64
래핑 클래스: java.lang.Double
최소값: Double.MIN_VALUE=4.9E-324
최대값: Double.MAX_VALUE=1.7976931348623157E308
기본 유형: char 2진수: 16
래핑 클래스: java.lang.Character
최소값: Character.MIN_VALUE=0
최대값: Character.MAX_VALUE=65535
Float 및 Double의 최소값과 최대값은 과학 표기법으로 출력됩니다. 끝에 "E+숫자"는 E 앞의 숫자에 10의 "숫자" 거듭제곱을 곱해야 한다는 의미입니다. 예를 들어 3.14E3은 3.14×1000=3140이고, 3.14E-3은 3.14/1000=0.00314입니다.
실제로 JAVA에는 또 다른 기본 유형인 void가 있으며 여기에는 해당 패키징 클래스인 java.lang.Void가 있지만 직접 작업할 수는 없습니다.
참조 유형 변수는 클래스 생성자에 의해 생성되며 이를 사용하여 참조된 개체에 액세스할 수 있습니다. 이러한 변수는 Employee, Pubby 등 선언 시 특정 유형으로 지정됩니다. 변수가 선언되면 해당 유형을 변경할 수 없습니다.
객체와 배열은 참조 데이터 유형입니다.
모든 참조 유형의 기본값은 null입니다.
참조 변수는 호환되는 모든 유형을 참조하는 데 사용할 수 있습니다.
예: 동물 동물 = 새로운 동물("기린").
상수는 고정된 값입니다. 계산이 필요하지 않으며 해당 값을 직접 나타냅니다.
상수는 변경할 수 없는 수량을 나타냅니다. 최종 플래그는 Java에서 사용되며 선언 방법은 변수와 유사합니다.
최종 이중 PI = 3.1415927;
상수 이름은 소문자일 수도 있지만 쉽게 식별할 수 있도록 일반적으로 상수를 나타내는 데 대문자를 사용합니다.
리터럴은 모든 내장 유형의 변수에 할당될 수 있습니다. 예를 들어:
바이트 a = 68;
문자 a = 'A'
Byte, int, long 및 short는 모두 10진수, 16진수 및 8진수 표기법으로 표시될 수 있습니다.
상수를 사용할 때 접두사 0은 8진수를 나타내고 접두사 0x는 16진수를 나타냅니다. 예를 들어:
int 십진수 = 100;
정수 8진수 = 0144;
int 헥사 = 0x64;
다른 언어와 마찬가지로 Java의 문자열 상수는 두 개의 따옴표로 묶인 문자 시퀀스입니다. 다음은 문자열 리터럴의 예입니다.
"안녕하세요 세계"
"두n줄"
""따옴표 안에 있습니다""
문자열 상수와 문자 상수 모두 모든 유니코드 문자를 포함할 수 있습니다. 예를 들어:
char a = 'u0001';
문자열 a = "u0001";
Java 언어는 일부 특수 이스케이프 문자 시퀀스를 지원합니다.
상징 | 문자 의미 |
---|---|
N | 줄 바꿈(0x0a) |
아르 자형 | (0x0d)를 입력하세요 |
에프 | 폼 피드 문자(0x0c) |
비 | 백스페이스(0x08) |
널 문자(0x0) | |
에스 | 끈 |
티 | 탭 문자 |
" | 큰따옴표 |
' | 작은따옴표 |
\ | 백슬래시 |
ddd | 8진수 문자(ddd) |
uxxxx | 16진수 유니코드 문자(xxxx) |
이 섹션에서는 Java의 기본 데이터 유형을 설명합니다. 다음 섹션에서는 다양한 변수 유형과 그 용도를 살펴봅니다.