As Robert Dewar likes to say about style, one can get used to almost anything, ...
But another one of the things that irritates me about Java is not only the
false claim that it is a "pure OO" language, but the fact that the
handling of "non-OO" entities--primitives--is so inconsistent with the
handling of Objects.
It may become "second-nature" after a while, but the programmer must
constantly be aware of whether he/she is dealing with an Object or a
primitive, and what that means in terms of implementation.
When I do an assignment, am I really doing an asignment or am I creating
another pointer to a single object? When I compare, am I comparing values
or pointers? Do I need a "new" or is this automatically created in stack
space? When I use this as an actual parameter, do I know whether the
programmer of that routine kept track of all these things?
To summarize, there are several constructs having semantics
that change with context.