Yeah, but Java has primitives and thus value semantics you mention. Also, Java is much cleaner than c++ and on the scale of object-ness, java ranks higher than c++ but only a little bit.
True, Java has primitives, but I believe it is pretty much decided that they will be discontinued beginning with Java 8. (The fact that the wrapper classes like Double and Integer are immutable makes them behave sort of as if they had value semantics, but that's really an orthogonal issue.)