각 이항 산술 연산마다 모든 가능한 수 타입 간의 연산을 지원하기 위한 변종이 함께 제공된다. 수 타입이 여섯 가지이므로 각 연산마다 6 × 6 = 36가지 버전이 있다는 뜻이다. 이로 인해 산술 연산에서 명시적인 타입 변환을 수행하지 않아도 여러 수 타입을 혼용할 수 있다. 이러한 산술 연산의 결과는 인자 중 더 큰 의미를 지니는 타입이 된다.
Double > Float > Long > Int > Short > Byte
대부분의 타입에서 이는 해당 타입이 표현할 수 있는 값의 범위가 더 넓다는 뜻이다. 하지만 항상 그렇지는 않다. 분명한 예로 Long에서 Float로 변환되는 경우를 들 수 있다. 이 경우 일부 유효 자리 숫자를 잃고 정밀도(precision)가 떨어지게 된다.
이로부터 다음을 알 수 있다.
byte + byte // 2: Byte int + byte // 2: Int int + int // 2: Int int + long // 2: Long long + double // 2.5: Double float + double // 3.0: Double float + int // 2.5: Float long + double // 2.5: Double