1. The file name must match the class name.
2. The char type is 16-bits.
3. Support new "normal logical operators", such as "&" and "|".
4. Don't support the same variable name between different scopes.
5. From JDK 7, the expression controlling the switch could be type String.
6.Support a goto style break, i.e. " break label"; support same kind of continue, i.e. "continue label".
7. No c/c++ pointer, all object variables are reference.
8. If class method has no parameters, the parameter list will be empty, NOT "void".
9. No explicit destructors, finilize() method would be called before garbage collection.
10. Arrays are implemented as objects.
11.Irregular arrays supports sparsely array.
12. Two form of array declaration syntax: int counter[] = new int[3]; int[] counter = new int[3];
13. Array supports length member, length member gives the capability of the array.
14. String.equals(str) is not same as == operator.
The equals() method compares the character sequences of two String objects for equality. Applying to == to two String references simply determines whether the two references refer to the same object.
15. Strings are immutable.
16. Class support static block which is executed before the object is created ,and before constructor.
17. Support nested and inner class, and anonymous class.
18. Java does not support the inheritance of multiple superclasses into a single subclass. However, it supports the inheritance of multiple interfaces.
19. Use super to call superclass constructor, superclass members.
20. Java support the abstract method, the containing class must be abstract also.
21. final prevents overriding, inheritance, and can be used to define a constant similar as #define in C.