Java is a true and complete object oriented language.
C++ is an extension of C with object oriented behavior. C++ is not a complete object oriented language as that of Java.
Java does not provide template classes.
C++ offers Template classes.
Java supports multiple inheritance using interface.
C++ achieves multiple inheritance by permitting classes to inherit from multiple classes.
Java does not provide global variables.
Global variables can be declared in C++.
Java does not support pointers.
C++ supports pointers.
In Java, destruction of objects is performed in finalize method.
In C++, destruction of objects is performed by destructor function.
Java doesn’t provide header files.
C++ has header files.
Java runs in a virtual machine.
C++ natively supports unsigned arithmetic.
In Java, parameters are always passed by value (or, with objects, their references are passed by value). In C++, parameteres can be passed by value, pointer, or by reference.