C++ has operator overloading and pointers. Java don't have operator overloading and pointers.
Java have references to objects, it also support method overloading and method overriding.
Java is platform independent.
Java is objet oriented language.
Java is not procedural language, not functional programming language.
Java puts source code in .java files and bytecode in .class files.
Java does not use a .bytecode file.
When running a Java program, you pass just the name of the class without the .class extension.
Calling System.gc() suggests that java might wish to run the garbage collector. Java is free to ignore the request. When garbage collector runs, the protected void finalize() {} function is called.
package and import are optional. If both are present, the order must be package, then import, then class.
0b is the prefix for a binary value and 0X is the prefix for ahexadecimal value. These values can be assigned to many primitive types, including int and double.
Java package name represents any folders underneath the current path, for example, if the current directory is /a/b/c, and the source file is /a/b/c/d/e/F.java, the package is package d.e;
The canonical main() method signature is public static void main(String[] args)
When invoking java program, the parameters with spaces much be in quotes. For example:
java className para0 para1 "para number2"
Java importing by classname takes precedence over wildcards.
Java local variable have to be initialized before use, java instance variable have default values. For primitives, boolean default to false, double and float default to 0.0, other default to 0, reference type default to null.