자바 의 Byte 형식의 연산 디 테 일
2467 단어 Java
public calss Test{
public static void main(String[] args){
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=5;
b6=b4+b5;
b3=b1+b2;
System.out.println(b3+b6);
}
}
:
b3=b1+b2
설명: byte 형식 이 변수 간 의 계산 을 할 때 유형 을 int 형식 으로 올 려 계산 합 니 다.
- - b3 = b1 + b2 에서 b1, b2 는 byte 형 이 고 자바 에서 계산 할 때 그들 을 int 유형 으로 올 려 계산 해 야 합 니 다. b1 + b2 계산 후 int 유형 이 되 었 습 니 다. b3 에 할당 되 었 고 b3 는 byte 유형 입 니 다. 유형 이 일치 하지 않 으 면 컴 파일 이 통과 되 지 않 습 니 다. int 유형 은 byte 유형 에 직접 할당 할 수 없 기 때문에 필요 하 다 면 강 한 전환 이 필요 합 니 다.
그러나 b6 역시 두 개의 byte 에 의 해 할당 되 었 는데, 왜 그것 은 잘못 보고 하지 않 습 니까?
이 유 는 final 에 있 습 니 다. final 에 의 해 수 정 된 변 수 는 상수 입 니 다. 여기 서 b4 는 3 으로 바 꿀 수 있 고 b5 는 4 로 바 꿀 수 있 습 니 다.즉: b6 = 4 + 5;유형 향상 과 관련 되 지 않 고 컴 파일 할 때 b6 = 9 가 되 었 습 니 다.
요약: 자바 의 byte, short, char 는 계산 할 때 int 형식 으로 향상 된다.
상기 몇 가지 예 를 통 해 구체 적 으로 설명 한다.
1. 예 1
byte a=1;
a=a*2;
System.out.println(a);
해석: 자바 에 서 는 byte, short, char 형식의 변 수 는 연산 할 때 자동 으로 int 형식 으로 변 환 됩 니 다.형식 byte a = 1;중 변수 a 는 byte 형식 이지 만, 식 a = a2 에 서 는 a2 가 int 형식 이 고, a 는 byte 형식 이기 때문에 int 형식 에 값 을 부여 하면 byte 형식 에 정밀도 손실 을 보고 하고 컴 파일 오류 가 발생 합 니 다.a = a2;이 식 은 a = (byte) a2 로 바 꿉 니 다.되다(이 동작 은 강전 환 입 니 다)
2. 예 2 (byte 의 넘 침 문제)
byte b=(byte)(123+123);
System.out.println(b); //-10
왜 결과 가 - 10 일 까요?
: ,
int 246 :0000 0000 1111 0110 ,
byte 1111 0110
, ,
, 1000 1010
-10
한 숫자의 패 치 를 알 고 있 는데, 어떻게 그것 의 원 코드 를 구 합 니까?설명: 기호 위치 가 변 하지 않 고 다른 위 치 는 모두 반대 한 다음 에 최종 결과 + 1
3. 예 3
short a = 128 ;
byte b = (byte)a ;
System.out.println(b); //-128
: a 0000 0000 1000 0000,
1000 0000
1, ,
1000 0000
-128
여기 서 주의 할 점 이 있 습 니 다. 바 이 너 리 원본 코드 나 8 비트 바 이 너 리 반 코드 의 표시 범 위 는 모두 - 127 ~ + 127 이 고 - 128 을 표시 할 수 없습니다.8 비트 바 이 너 리 패 치 의 표시 범 위 는 - 128 ~ + 127 이 고 그 중에서 - 128 의 8 비트 바 이 너 리 패 치 는 10000000 이다.
4. 예 4
byte a = (byte)(-129) ;
System.out.println(a); //127
:a 1000 0000 0000 0000 0000 0000 1000 0001
a 1111 1111 1111 1111 1111 1111 0111 1111
, 8 , 0111 1111
127
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.