/ ************************************************** *********************************************************** ***********
A Compared Overview of C , C #, And Java
Quick and Rough Comparisons of Various Features of C , C #, and Java.
Just for Those Built Into The Language Itself, NOT Capabilities Supported by Libraries.
*********************************************************** *********************************************************** ********** /
/ *
FEATURES OVERVIEW
C C # java
-------------------------------------------------- -------------------------------------------------- -----------
Array Bounds Checking N Y Y Y Y
Built-in strings n y y y
Conditional Compilation Y Y y N
COVARIANT RETURN TYPES Y N n
Direct Access To C Y N N
Direct Access to Hardware Y N N
Direct Native Code Generation Y N N
Dynamic Class Loading N y y
ENUMERATED TYPES Y Y N
Exception Handling Y Yexplicit Memory Allocation Control Y N N
Function delegates N y n
Function Overloading Y Y Y Y Y Y Y Y
Garbage Collection N y y y y y y y y y
Generates Standard Object Files Y N
Guaranteed Initialization N y y y
Inline assembler y n n
Inner Classes n n y
Interfaces y (*) Y Y Y Y Y Y Y Y Y Y Y Y
Independent Of VM Y N n
Lightweight arrays y n n
Lightweight Objects y y y y y
Macro Text Preprocessor Y N N
Modules Y Y Y Y
Multiple Inheritance Y n nnested functions n n n
Operator overloading y y n
Out function parameters y y y y y
Properties n y n
Static Construction Order N Y Y Y Y Y Y
String switches n y y y
Templates y n (*) n (*)
Thread Synchronization Primitives N y y y
Try-catch-finally blocks n y y
Use existing debuggers y n n
-------------------------------------------------- -------------------------------------------------- -----------
2. Keywords
Notice, The Same Keyword May Have Subtle Difference In Different Languages in A Way.
C C # java
-------------------------------------------------- -------------------------------------------------- -----------
Abstract n y y
ask N Y NBASE N Y N
BOOL Y Y N
Boolean N y
Break y y y
Byte n y y
Case y y y
Catch y y y
CHAR Y Y Y Y Y
Checked N y n
Class y y y
Const Y Y Y
Const_cast y n n
Continue Y Y Y Y
Decimal N y n
DEFAULT Y YDELEGATE N Y N
Delete Y n n
Do Y Y Y Y Y Y Y
Double y y y
Dynamic_cast y n n
Else y y y
ENUM Y Y N
Extends n n y
Event N y n
Explicit y y n
EXTERN Y y N
False Y Y Y Y Y Y
Final n n y
Finally n y y y
Float y y y y y y y y y y y y y y y y y
Foreach n y n
Friend y n n
Goto y y y (*)
IF Y Y Y Y Y
IMPLEMENTS N y
Implicit N y n
IMPORT N y
In n y n
InstanceOf n y y
Inline y n n
Int y y y y y y y y y y y y
Interface N y y y
INTERNAL N Y N
IS N y nlock n y n
Long y y y
Mutable y n n
Namespace y y y
Native N n y
New y y y
null n y y
Object n y n
Operator y y
Out n y n
Override n y n
Params n y n
Package n n y
Private y y y
Protected y y ypublic y y y y
Readonly N y n
Register y n n
Ref n y n
Reinterpret_cast y N n
Return Y Y Y Y Y
Sbyte n y n
Sealed n y n
Short y y y
Signed Y n n
SIZEOF Y Y
Stackalloc N y n
Static Y Y Y Y
Static_cast y n n
Strictfp n n ysuper n n y
String n y n
Struct y y n
Switch y y y
Synchronized n n y
Template Y N n
THIS Y Y Y Y
Throw y y y
Throws n n y
Transient N N Y
True Y Y Y Y Y Y
Try y y y
TypeDef y n n
TYPEOF N Y n
TYPEID Y N NTYPENAME Y N
Uint N y n
Ulong N y n
Unchecked n y n
UNSAFE N Y N
Ushort n y n
Union Y N
Unsigned y n n
Using y y n
Virtual y y n
Void y y y
Volatile Y Y Y Y Y Y
While y y y
-------------------------------------------------- -------------------------------------------------- -----------
3. Operators
C C # java
-------------------------------------------------- -------------------------------------------------- ----------- Addition
Subtraction - - - -
MultiPlication * * *
Division / / /
Integer Division /
MODULUS%%%
Assignment = = =
Addition Assignment = = =
Subtraction associNMent - = - = - =
MULTIPLICATION ASSIGNMENT * = * = * =
Division associNMent / = / = / =
Integer division associNMent / =
MODULUS Assignment% =% =% =
LEFT Shift << << <<
Right shift >> >> >> LEFT shift assignment << = << = << =
Right shift assignment >> = >> = >> =
Bitwise and & & & & &tes
Bitwise Inclusive or | | | | | |
Bitwise Exclusive or ^ ^ ^
Logical and && && && && &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Logical or || || ||
Logical Negation!!!
Bitwise and Assignment & = & = & =
Bitwise Exclusive or Assignment ^ = ^ = ^ =
Bitwise Inclusive or Assignment | = | = | =
One's Complement ~ ~ ~
Less Than <<<<<<<<<<<<<<
Less tour or equal to <= <= <= greater tran>>>>
Greater Than or Equal to> => => =
Equality == == ==
NOT Equal! =! =! =
Compare reference type x is myclass x instanceof myclass
Compare string some functions == or string.equals () String.equals ()
Concatenate String
Scope resolution ::. And base
Subscript [] [] []
Function Call () () ()
Type Conversion (Sometype) and Something Else (SomeType)
OR ->.
Postfix Increment
Postfix Decrement - - --- Indirection * * (for unsafe code)
Address-of & & & && (for unsafe code)
Prefix Increment
Prefix Decrement - - -
Size of Type SizeOf Sizeof
COMMA,
Conditional?:?:?:?
Pointer-to-member. * Or->. (For unsafe code)
REFERENCE &
-------------------------------------------------- -------------------------------------------------- -----------
4. Simple Escape Sequences
C C # java
-------------------------------------------------- -------------------------------------------------- -----------
/ a y y n
/ b y y y
/ f y y y
/ N y y y / r y y y y y y
/ t y y y
/ v y y n
/ "Y y y
/ 'Y y y
// y y y
-------------------------------------------------- -------------------------------------------------- -----------
5. Comments
C C # java
-------------------------------------------------- -------------------------------------------------- -----------
// y y y
/ * * / Y y y
/ ** * / n n y
/// n y n
-------------------------------------------------- -------------------------------------------------- -----------
* /