Причина в наличии примитивных типов данных (byte, short, int, long, float, double, boolean, char). Они не являются объектами и существуют вне иерархии наследования классов, в отличие от их объектных оберток (Byte, Short, Integer, Long, Float, Double, Boolean, Character).