2009-02-26 3 views
3

나는 그 질문이 분명하게 분명하지는 않지만, 그 예가 더 분명해질 것이다. op-assign 연산자가 java에서 안전하지 않은 이유는 무엇입니까?

나는 자바에서 작동하지 않습니다 발견 :

int a = ...; 
a = 5.0; 

하지만이됩니다

int a = ...; 
a += 5.0; 

즉, = 연산자를 안전하게 입력 것 같다하지만, + =이 없습니다. 이것에 대한 깊은 이유가 있거나 디자이너가 취해야 할 임의의 결정 언어 일뿐입니다. 다음과 같이

a += 5.0;이 평가 :

a = (int) ((double) a + 5.0); 

할당은, 그러나, 명시 적 캐스트가 필요

답변

1

가 인생을 더 쉽게 만드는.

조금 더 가자. 고려 :

byte b; 
... 
++b; 

을 증분 정말하고있다 :

b = (byte)(1 + (int)b); 

에도 +=를 사용하는 것이 더 좋은하지 않습니다

b += b; 

것은 :

b = (byte)((int)b+(int)b); 

그 이 통신 수를 usel로 만들 것입니다. 바이트/짧은/char에 대한 ess.

물론 우리가 임의의 크기의 정수를 가질 때까지 나는 행복하지 않을 것이다.

5

이유는 수학 연산이 어떤 암시 적 캐스팅을 할 것입니다.

(이 떠 오히려 두 배 이상, 나는 자바 소수점 리터럴로 취급하는 기억이 안 될 수 있습니다.)

+0

하지만 int로 최종 캐스트를 수행하는 이유는 무엇입니까? –

+0

(double, f 접두사 접두어 .JavaFX 1.0은 double을 사용하고 1.1은 float을 사용한다고 생각합니다.) –

+0

@litb : a는 int이기 때문에. – mipadi

관련 문제