title: Java breaks strong typing! Who can explain it?
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/2696812/varying-behavior-for-possible-loss-of-precision">Varying behavior for possible loss of precision</a>  </p>
  </blockquote>
  
  
  
  <p>I found an inconsistence in Java strong typing check at compile time.
  Please look at the following code:</p>
  
  <pre><code>int sum = 0;
  sum = 1; //is is OK
  sum = 0.56786; //compile error because of precision loss, and strong typing
  sum = sum + 2; //it is OK
  sum += 2; //it is OK
  sum = sum + 0.56787; //compile error again because of automatic conversion into double, and possible precision loss
  sum += 0.56787; //this line is does the same thing as the previous line, but it does not give us a compile error, and javac does not complain about precision loss etc.
  </code></pre>
  
  <p>Can anyone explain it to me? Is it a known bug, or desired behavior?
  C++ gives a warning, C# gives a compile error.</p>
  
  <p>Does Java breaks strong typing?
  You can replace += with -= or *= - everything is acceptable by a compiler. </p>