2010-03-21 8 views
3
public class b { 
    public static void main(String[] args) { 
     byte b = 1; 
     long l = 127; 
    // b = b + l;   // 1 if I try this then it does not compile 
     b += l;    // 2 if I try this then it does  compile 
     System.out.println(b); 
    } 
} 

이 코드를 사용하고 있지만이 문제가 문제가 있습니다 b=b+l; 컴파일되지 않는 이유 이해가 안 을하지만 b+=l;를 작성하는 경우 다음 컴파일 및 실행됩니다.나는 다음과 같은 자바 코드

왜 이런 일이 발생하는지 설명하십시오.

+1

@Sanjeev 만약 당신이/당신의 질문에 올바르게 대답 - 당신은 투표 카운터 아래에있는 체크를 클릭 하여이 작업을 수행 할 수있는 몇 가지 답변을 받아야 해. – Bozho

답변

1

이것은 할당 연산자보다 + =, - = 등의 복합 할당 연산자의 장점입니다. 오른쪽에 명시 적으로 캐스트해야하지만 복합 할당 연산자를 사용하면 암시 적으로 수행합니다 너를 위해서. 귀하의 사건에서 일어나는 일입니다.

13

b+=1 Java에서 자동으로 유형 변환을 수행합니다. b=b+1 않습니다.

+3

http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.26.2도 참조하십시오. – trashgod