Home : Course Map : Chapter 2 : Java : Supplements :
Java vs C/C++
JavaTech
Course Map
Chapter 2

Introduction
Essentials
Structure

Keywords
Primitive Types
Comments
Literals
Expressions
Operators
Statements
Casts & Mixing
Strings
Console Output 
   Demo
Exercises

    Supplements
Conditional: if-else
Repetitions
Flow Control

Java vs C/C++
JVM Instructions 1

     About JavaTech
     Codes List
     Exercises
     Feedback
     References
     Resources
     Tips
     Topic Index
     Course Guide
     What's New

At a glance, Java codes looks very similar to that of C /C++, but as you start to compare them many differences soon emerge.

Here we discuss here the differences at the syntax level. In Chapter 3: Supplements we discuss the differences between Java and C++ at the higher object-oriented level, such as class descriptions, methods, etc.

Unlike C/C++, standard Java has:

  • No preprocessor or header files - all Java code occurs within the class structure. Java methods can be invoked (i.e. called) before they are defined so they are not declared as in C/C++.
  • No global variables - all variables belong to a particular class. Java static class variables can serve the same purpose as global variables but without the collisions in namespace that occur in C/C++.
  • Automatic garbage collection - the JVM manages memory allocation and removal. The programmer does not need to allocate memory or delete data directly. Memory leaks (loss of free memory space) can still occur in Java but they are much less of a problem.
  • No pointers - Java does not allow direct access to memory addresses. This removes a huge source of errors and security problems.
  • Type safety - all data must have an explicit type and you cannot arbitrarily cast one type to another. For example, you cannot cast a reference to a primitive type as can in C where a pointer can be cast to an integer to obtain a memory address value.
  • Strict lengths for primitive types - all of the integer types have a fixed number of bits (in C/C++ these can vary with platform) Floating point exponents, though, can vary with the platform unless the strictfp modifier is used.
  • Unrestricted location of variable declarations - you can define local variables in a method at the place where you use them rather than only at the beginning.
  • No goto statement - though long discouraged by computer science teachers, the infamous goto spaghetti code maker is nevertheless available in C/C++.
  • No typedef - no way is provided in Java to give alias names to types or classes.
  • No union - memory can only have a single type. No overlapping types as in a union.
  • No struct - replaced by class in Java.
  • No bit fields - cannot specified the number of bits spanned by a field.
  • No enum - can use object constants instead.
  • No comma operator - while Java allows a comma in the for statement,
       for( i=0, j=2; i<5; i++, j++)...
    this is not the same as the comma operator in C that evaluates two expressions and returns the value of the one to the right of the comma.

References & Web Resources

Latest update: Dec.11.2003

            Tech
Arithmetic Ops
Math Class
More on Integers
FP : Overview
FP : Java  
  
Demo 1
More Mix/Cast
  Demo 2
Exercises

           Physics
Differential Eq.
Euler Method
  
Demo 1
Predictor-Corrector
  
Demo 2
Exercises

  Part I Part II Part III
Java Core 1  2  3  4  5  6  7  8  9  10  11  12 13 14 15 16 17
18 19 20
21
22 23 24
Supplements

1  2  3  4  5  6  7  8  9  10  11  12

Tech 1  2  3  4  5  6  7  8  9  10  11  12
Physics 1  2  3  4  5  6  7  8  9  10  11  12

Java is a trademark of Sun Microsystems, Inc.