자바 중 short s1 = 1;s1 = s1 + 1;오류 가 발생 할 수 있 습 니 다. short s1 + 1;컴 파일 이 통 과 된 이유

1140 단어 자바
최근 자바 에서 연산 자 와 유형 전환 에 관 한 필기시험 문 제 를 보 았 습 니 다. 기본 적 이지 만 전형 적 인 문제 이기 때문에 여기 서 정리 하 겠 습 니 다.질문 설명: 질문: (1)
   short s1 = 1;
   s1 = s1 + 1;  

(2)
   short s1 = 1;
   s1 = s1 + 1;  
   
           ,   ?

제 (1) 문 제 를 분석 한 결과 s1 은 short 형식의 변수 로 int 유형의 1 과 연산 할 때 자동 으로 short - > int 를 복사 연산 자 '=' 를 실행 하면 유형의 오류 가 발생 합 니 다. 왼쪽 은 short 형식 이 고 오른쪽 은 int 형식의 변수 입 니 다.자바 에 서 는 낮은 비트 의 데이터 형식 을 높 은 비트 의 데이터 형식 으로 자동 변환 (암시 적) 할 수 있 도록 규정 하고 있 으 며, 높 은 비트 에서 낮은 비트 형식 으로 전환 하려 면 강제 적 인 유형 설명 을 해 야 합 니 다.높 은 비트 에서 낮은 비트 데이터 형식 으로 전환 할 때 데이터 정밀도 의 손실 이 발생 하기 쉽 기 때문이다.두 번 째 문제 에 대해 서 는 JDK 의 도움말 문 서 를 찾 았 고 복합 할당 연산 자 '+ =' 의 용법 을 보 았 습 니 다.도움말 문서 에 서 는 다음 과 같 습 니 다. > A compound assignment expression of the form E1 op = E2 is equivalent to E1 = (T) ((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.
복합 할당 (E1 op = E2) 은 단순 할당 (E1 = (T) ((E1) op (E2)) 과 같 고, T 는 E1 의 데이터 형식 을 나타 낸다 는 뜻 이다.'+ =' 연산 자 에는 오른쪽 변 수 를 왼쪽 데이터 형식 으로 변환 하 는 문구 가 포함 되 어 있 음 을 알 수 있 습 니 다.즉: short s1 = 1;s1 += 1; 등가: s1 = (short) (s1 + 1)

좋은 웹페이지 즐겨찾기