Differences Between C and Java
If you are a C or C++ programmer, you should have found much of the syntax of Java—particularly at the level of operators and statements—to be familiar. Because Java and C are so similar in some ways, it is important for C and C++ programmers to understand where the similarities end. C and Java differ in important ways, as summarized in the following list:
- No preprocessor
Java does not include a preprocessor and does not define any analogs of the
#ifdefdirectives. Constant definitions are replaced with
finalfields in Java. (See the
java.lang.Math.PIfield for an example.) Macro definitions are not available in Java, but advanced compiler technology and inlining has made them less useful. Java does not require an
#includedirective because Java has no header files. Java class files contain both the class API and the class implementation, and the compiler reads API information from class files as necessary. Java lacks any form of conditional compilation, but its cross-platform portability means that this feature is rarely needed.
- No global variables
Java defines a very clean namespace. Packages contain classes, classes contain fields and methods, and methods contain local variables. But Java has no global variables, and thus there is no possibility of namespace collisions among those variables.
- Well-defined primitive type sizes
All the primitive types in Java have well-defined sizes. In C, the size of
Get Java in a Nutshell, 5th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.