면접관은 기본 데이터 유형에 대한 질문에 답변하지 않습니다.이 기사를 읽는 것으로 충분합니다 (컬렉션 권장 !!!).

이 블로그는 기본적으로 더 이상 기본이 될 수없는 기본 지식인 Java 데이터 유형에 대한 일부 지식을 주로 기록하고 있습니다. 정말 철저히 이해하고 있습니까? 필요한 친구들, 에디터와 함께 공부하자!

이 기사를 읽은 후 누군가가 인터뷰에서 데이터 유형에 대해 다시 물어 보면 당황하지 않을 것이라고 생각합니다.


데이터 유형의 역할은 무엇입니까?

프로그램에는 많은 데이터가 있고 각 데이터에는 관련 유형이 있고 데이터 유형에 따라 차지하는 공간도 다릅니다. 데이터 유형의 기능은 JVM이 실행할 때 데이터에 할당 할 메모리 양을 안내하는 것입니다. 프로그램 공간.

JAVA의 데이터 유형 분류

데이터에는 기본 데이터 유형과 참조 데이터 유형의 두 가지 유형이 있으며
기본 데이터 유형은 네 가지 범주로 나뉩니다.

정수 (byte, short, int, long)
부동 소수점 (float, double)
부울 (boolean)
문자 (char)

참조 유형은 세 가지 범주로 나뉩니다.

배열
클래스
인터페이스

점유 공간 및 값 범위 유형

간단한 검토

점유 공간을 이해하기 전에 컴퓨터 지식을 간략하게 살펴 보겠습니다.

컴퓨터는 어떤 상황에서도 바이너리 시스템을 인식 할 수 있습니다. 예를 들어, 101010101010 만 인식하고,
최신 컴퓨터의 하단 계층은 교류를 사용하며, 컴퓨터는 1 또는 0 만 인식 할 수 있습니다.

바이너리 란?

데이터의 표현 형식입니다. 십진수 시스템은 완전 십진의 원리를 나타내고 이진 시스템은 완전 이진의 원리를 나타냅니다.

예 : 십진수 012
34 5678 9 10 11 12…
예 : 이진
십진수 : 012 34 5678 9
이진수 : 012 34 5678 9 이진수 : 01 10 11100101110111 1000 1001

바이너리는 다음과 같습니다. 12 4 8 16

컴퓨터는 바이너리 만 인식하므로 컴퓨터는 텍스트를 어떻게 표현합니까?

8 가지 기본 데이터 유형 중 byte, short, int, long, float, double, boolean은 모두 맨 아래에있는 숫자입니다. 컴퓨터에서 표현하기 매우 쉽습니다. 십진수와 이진수 사이에는 고정 된 변환 규칙이 있습니다. .
그러나 8 가지 기본 데이터 유형 중 char 유형은 실제 세계의 텍스트를 나타내며 텍스트와 바이너리 간의 변환 관계가 없습니다.

컴퓨터가 실제 세계에서 텍스트를 표현하기 위해서는 더 많은 사람의 개입이 필요하고 텍스트와 바이너리 간의 비교 관계를 미리 수동으로 공식화해야합니다.이 비교 관계의 변환을 문자 인코딩이라고합니다.

컴퓨터는 처음에는 영어 만 지원하며 첫 번째 문자 인코딩은 다음과 같습니다. ASCII 코드
a는 숫자로 표현할 때 97이고 A는 숫자로 표현할 때 65입니다.

ASCII 코드는 딕셔너리로 ​​이해할 수 있습니다. 즉, 각 문자는이를 나타내는 숫자에 해당하고 마지막으로 숫자를 이진수로 변환하면 기계 인식이 완료됩니다.

'a'-(ASCII에 따라 디코딩)-> 01100001
01100001-(ASCII에 따른 코드)-> 'a'
인코딩과 디코딩이 동일한 비교 테이블 세트가 아닌 경우 잘못된 문자가 발생합니다.

계산 단위 변환

1 바이트 = 8 비트 [1 바이트 = 8 비트] 1 비트는 이진 비트를 나타냅니다. 1/0
1KB = 1024 바이트
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

1TB = 1024 * 1024 * 1024 * 1024 * 8 비트
는 우리가 1TB에 대해 자주 듣게되는 것으로
여기에 사진 설명 삽입
1 또는 0을 너무 많이 저장할 수 있습니다 .

바이트에 대한 간단한 이해

바이트는 1 바이트를 차지하므로 바이트 유형 데이터는 8 비트를 차지하고 8 비트는 80 또는 1과 동일합니다.
자바 숫자의 종류에 따라 숫자는 양수와 음수로 나뉘므로 부호 비트라고하는 숫자의 이진수에는 이진 비트가 있습니다. 그리고이 부호 비트는 모든 이진 비트의 가장 왼쪽에 있습니다. 0은 양수, 1은 음수를 의미합니다.

위에서 알 수있는 것 : 바이트 유형 이진 표현의 최대 값 : 01111111
2의 7 제곱 -1 결과는 127입니다.

따라서 그의 값 범위는 바이트 수에 의해 결정됩니다.
최소값은 -128입니다 (이진 표현에는 원본 코드, 역 코드 및 보완 코드가 포함되며 이해할 수 있지만이 기사에서는 자세히 설명하지 않습니다)

여기에 사진 설명 삽입

8 가지 유형의 상세한 사용

int 유형

int 변수를 선언하면 코드는 다음과 같습니다.
여기서주의해야 할 점은 변수가 선언되었지만 값이 할당되지 않은 경우 출력이 오류를보고한다는 것입니다! ! !

int 변수는 메모리에서 4 바이트를 차지합니다. 이는 32 비트 비트 (32 0 또는 1)이므로 컴퓨터에 int 유형 5가 다음과 같이 표시됩니다.
00000000 00000000 00000000 00000000 00000101

byte 형

바이트 유형의 선언 방법은 int 유형의 선언 방법과 동일합니다. 유일한 차이점은 바이트 수입니다.
byte 유형의 변수 선언하기위한 코드는 다음과 같습니다.

짧은 유형

short 유형은 int 유형과 동일한 방식으로 선언됩니다. 유일한 차이점은 바이트 수입니다.

이것을 보면 실제로 byte int short는 숫자를 표현하는 데 사용할 수 있고 사용법은 동일하며 int는 개발에서 가장 많이 사용되며
byte short는 특히 드물고 이유는 하나뿐입니다. 표현 범위가 큽니다.

짧은 유형 변수를 선언하십시오. 코드는 다음과 같습니다.

긴 유형

long 형의 값 범위는 int보다 크고 고급 데이터 형에 속하므로 값을 할당 할 때 int 형과 구별 할 필요가 있으며 L 또는 l (소문자 L)을 추가해야합니다. 정수 뒤에.

긴 유형 변수를 선언하십시오. 코드는 다음과 같습니다.

여기에는 long 유형이 사용되었지만 할당에 L이 포함되지 않은 일반적인 오류가 있습니다. int 유형은 JAVA의 기본 인증서 유형입니다. L이 없으면 기본값은 int입니다. 여기서 계산 된 b 출력이 잘못되었습니다. int 유형의 바이트 수가 너무 크기 때문입니다. 그래서 완전하지 않습니다!

부동 소수점 유형 (float, double)

Float 및 double은 부동 소수점 유형이라고합니다. 부동 소수점 유형은 소수 부분이있는 숫자를 나타냅니다. Java의 부동 소수점 유형은 단 정밀도 부동 소수점 유형 (float)과 배정 밀도 부동 소수점 유형으로 구분됩니다. (더블) 값이 다릅니다. 값 범위.

기본적으로 소수는 double로 처리되며 float를 사용하여 소수를 선언하려면 소수 뒤에 F 또는 f를 추가해야합니다. 또한 접미사 d 또는 D를 사용하여 이중 유형 데이터임을 명확하게 나타낼 수 있지만 d 또는 D를 추가할지 여부에 대한 엄격하고 빠른 규칙은 없습니다. float 유형 변수를 선언 할 때 F 또는 f를 추가하지 않으면 시스템은이를 이중 유형으로 간주하고 오류를 만듭니다.

부동 소수점 유형 변수를 선언합니다. 코드는 다음과 같습니다.

참고 : 부동 소수점 값은 대략적인 값이며 시스템에서 계산 한 결과는 실제 값과 다를 수 있습니다.

문자 유형

문자 클래스는 16 비트 메모리 공간을 차지하는 단일 문자를 저장하는 데 사용됩니다. 문자 변수를 선언 할 때 문자에 대한 's'와 같이 작은 따옴표로 표현해야합니다.

Java는 문자를 정수로 처리 할 수 ​​있습니다. 유니 코드 인코딩은 부호없는 인코딩을 사용하기 때문에 65,535 개의 문자를 저장할 수 있으며 char는 정수로 작업을 수행 할 수 있습니다.
코드 예 :

boolean 형

부울 유형은 논리 유형이라고도하며 부울 논리에서 true와 false를 나타내는 true와 false의 두 값만 있습니다. 부울 유형은 정수 유형으로 변환 할 수 없습니다.
코드 예 :

데이터 유형 변환

유형 변환은 한 데이터 유형에서 다른 데이터 유형으로 값을 변경하는 프로세스입니다. 데이터 유형 변환에는 암시 적 변환과 표시 변환의 두 가지 방법이 있습니다. 저 정밀도 데이터 유형을 고정밀 유형으로 변환하면 확실히 성공할 것입니다. 고정밀 데이터 유형을 저 정밀도로 변환하면 필연적으로 정보 손실 또는 실패.

여기에 언급 된 정확도는 데이터의 정확도로 이해 될 수 있습니다.

암시 적 변환

낮은 수준의 유형에서 높은 수준의 변환으로 시스템은 아무런 작업없이 자동으로 수행됩니다. 이러한 유형의 변환을 암시 적 변환이라고하며 자동 변환이라고도합니다.
이러한 유형은 낮은 정밀도에서 높은 정밀도로 정렬됩니다 : byte-> short-> int-> long-> float-> double.
char 유형은 특별하며 정밀도 변경없이 일부 int 숫자와 호환 될 수 있습니다.

코드 예 :

고정밀에서 저 정밀도로 유형, 직접 컴파일 및 오류보고와 같이 프로그램을 개발할 때 종종 고-저 변환이 발생하며이 경우 디스플레이 변환을 사용해야합니다.

명시 적 변환

구문 : (유형 이름) 변환 할 값.
위에서 언급 한대로 높음에서 낮음으로 손실되는 경우가 있습니다. 여기에 예제를 작성하겠습니다.이 예제를 통해 아이디어가 명확해야한다고 생각합니다.

코드 예제 :
이 상황의 이유는 주전자를 들고 물컵에 물을 채우고 싶기 때문입니다. 물컵에는 물을 채울 수있는 물이 제한되어 있으므로 물이 가득 찰 때까지만 채워질 수 있습니다. 이번에는 채울 수없는 물의 일부가 있어야합니다. 이로 인해 손실이 발생합니다!

정수를 바이트, short, int 또는 long 유형 변수에 할당 할 때 변수의 값 범위를 초과 할 수 없으며 그렇지 않으면 유형 변환을 강제해야합니다.
예를 들어이 시나리오를 직접 컴파일하면 오류가보고됩니다. 강제 변환 후 출력 데이터는 129가 아니지만 컴파일 오류를 직접 방지합니다.





좋아요!

더 많은 사람들이 볼 수 있기를 바랍니다!

추천

출처blog.csdn.net/weixin_43888891/article/details/112208702