С тех пор как я начал Java, для меня было очень усугублено то, что он не поддерживает неявные преобразования из числовых типов в booleans, поэтому вы не можете делать такие вещи, как:
if (flags & 0x80) { ... }
вместо этого вы должны пройти через это безумие:
if ((flags & 0x80) != 0) { ... }
То же самое с нулем и объектами. Каждый другой C-подобный язык, который я знаю, включая JavaScript, позволяет это, поэтому я думал, что Java просто глупо, но я только что обнаружил, что С# тот же (по крайней мере, для чисел, не знаю о null/objects): http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
Microsoft специально изменила его с С++, так почему? Ясно, что я что-то пропускаю. Почему изменилось (что я думал) самое естественное в мире, чтобы сделать его более длинным для ввода? Что на Земле не так?