리터럴 (127)은 int 유형의 값을 나타낸다. 리터럴 1도 마찬가지입니다.이 둘의 합은 정수 128입니다. 두 번째 경우 문제는 이것을 바이트 유형의 변수에 할당한다는 것입니다. 실제 표현식 값과는 아무런 관련이 없습니다. 강제 (*)를 지원하지 않는 Java와 관련이 있습니다. 타입 캐스트를 추가해야합니다
byte b = (byte)(127 + 1);
그런 다음 컴파일됩니다.
(*) 적어도 String-to-integer, float-to-Time 종류가 아닙니다. Java는 어떤 의미에서 손실이없는 경우 강제를 지원합니다 (Java는 이것을 "확장"이라고합니다).
그리고 "강제"라는 단어는 바로 잡을 필요가 없었습니다. 그것은 매우 신중하고 정확하게 선택되었습니다. 가장 가까운 소스에서 직접 (Wikipedia) : "대부분의 언어에서 강제 변환은 컴파일 또는 런타임 중에 암시 적 변환 을 나타내는 데 사용됩니다 ." 및 "컴퓨터 과학, 형식 변환, 타입 캐스팅 및 강압에있는 다른 다른에 하나 개의 데이터 유형의 엔티티를 변경 암묵적으로 또는 명시 적으로하는 방법은.".
byte
데이터 유형이 그렇게 고통 스럽 습니까?!