> Quiz any C developer about unsigned, and pretty soon you discover that almost no C developers actually understand what goes on with unsigned, what unsigned arithmetic is. Things like that made C complex. The language part of Java is, I think, pretty simple. The libraries you have to look up.
Second, signed integer overflow is always undefined behavior whereas unsigned integer overflow is ok (= modulo behavior).
The actual issue I was describing is about accidentally converting a negative (signed) integer to an unsigned integer, which completely changes its value. This is not a problem with signed or unsigned integers per se, but rather with the implicit conversions between these types. IMO this should have never been allowed in the first place.