http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java‘ dan alıntıdır.
Data types |
Java |
C# |
Single-root (unified) type system |
No |
Yes |
Signed integers |
Yes; 8, 16, 32, 64 bits |
Yes; 8, 16, 32, 64 bits |
Unsigned integers |
No |
Yes; 8, 16, 32, 64 bits |
Character |
Yes |
Yes |
Date/time |
Yes; reference type |
Yes; value type |
IEEE 754 binary32 floating point number |
Yes |
Yes |
IEEE 754 binary64 floating point number |
Yes |
Yes |
High precision floating point number |
No; but see Arbitrary size decimals |
128-bit (28 digits) Decimal type |
Boolean type |
Yes |
Yes |
Strings |
Immutable reference type, Unicode |
Immutable reference type, Unicode |
Arbitrary size integers |
Reference type; no operators |
Yes |
Arbitrary size decimals |
Reference type; no operators |
No |
Complex numbers |
No |
Yes |
Reference types |
Yes |
Yes |
Arrays |
Yes |
Yes |
Value types |
No; only primitive types |
Yes |
Enumerated types |
Yes; reference type |
Yes; scalar |
Lifted (nullable) types |
No; but wrapper types |
Yes |
Tuples |
No |
Yes |
Pointers |
No |
Yes |
Reference types |
Java |
C# |
Garbage collection |
Yes |
Yes |
Weak references |
Yes |
Yes |
Soft references |
Yes |
No |
Proxy support |
Yes; proxy generation |
Yes; object contexts |
Object orientation |
Java |
C# |
Classes |
Yes |
Yes |
Interfaces |
Yes |
Yes |
Abstract classes |
Yes |
Yes |
Member accessibility levels |
Public, package, protected, private |
Public, internal, protected, private |
Class level inner classes |
Yes |
Yes |
Instance level inner classes |
Yes |
No |
Partial classes |
No |
Yes |
Statement level anonymous classes |
Yes |
No |
Implicit (inferred) anonymous classes |
No |
Yes |
Deprecation/obsolescence |
Yes |
Yes |
Overload versioning |
Some |
Yes |
Properties |
No, but see JavaBeans spec |
Yes |
Events |
No; but the base class library does feature an event mechanism |
Yes |
Operator overloading |
No |
Yes |
Indexers |
No |
Yes |
Implicit conversions |
No |
Yes |
Explicit conversions |
No |
Yes |
Fields and initialization |
Java |
C# |
Fields |
Yes |
Yes |
Constants |
Yes |
Yes |
Static (class) constructors |
Yes |
Yes |
Instance constructors |
Yes |
Yes |
Finalizers/destructors |
Yes |
Yes |
Instance initializers |
Yes |
No |
Object initialization |
Bottom-up (fields and constructors) |
Top-down (fields); bottom-up (constructors) |
Object initializers |
No |
Yes |
Collection initializers |
No; can be modelled |
Yes |
Array initializers |
Yes |
Yes |
Methods and properties |
Java |
C# |
Static imports |
Yes |
No |
Virtual |
Virtual by default |
Non-virtual by default |
Abstract |
Yes |
Yes |
Sealing |
Yes |
Yes |
Explicit interface implementation |
No |
Yes |
Value (input) parameters |
Yes |
Yes |
Reference (input/output) parameters |
No |
Yes |
Output (output) parameters |
No |
Yes |
Variadic methods |
Yes |
Yes |
Optional arguments |
No |
Yes |
Named arguments |
No |
Yes |
Generator methods |
No |
Yes |
Extension methods |
No |
Yes |
Conditional methods |
No |
Yes |
Partial methods |
No |
Yes |
Generics |
Java |
C# |
Reified generics |
No |
Yes |
Runtime realization |
No |
Yes |
Covariance |
Yes |
Yes |
Contravariance |
Yes |
Yes |
Reference type constraint |
Yes; implicit |
Yes |
Value/primitive type constraint |
No |
Yes |
Constructor constraint |
No |
Yes |
Relation constraint |
Yes |
Yes |
Primitive/value type support |
No |
Yes |
Migration compatibility |
Yes |
No |
Functional programming |
Java |
C# |
Method references |
No; some use cases covered by anonymous inner classes |
Yes |
Closures/lambdas |
No; some use cases covered by anonymous inner classes |
Yes |
Expression trees |
No |
Yes |
Generic query language |
No |
Yes |
Runtime (dynamic) binding |
Java |
C# |
Late-bound (dynamic) type |
No |
Yes |
Runtime type information and manipulation |
Java |
C# |
Runtime type information |
Yes; but with type erasure |
Yes |
Runtime generics realization |
No |
Yes |
Runtime type construction |
No; third party tools exist |
Yes |
Statements |
Java |
C# |
Loops |
Yes |
Yes |
Conditionals |
Yes |
Yes |
Flow control |
Yes |
Yes |
Assignment |
Yes |
Yes |
Exception control |
Yes |
Yes |
Variable declaration |
Yes |
Yes |
Variable type inference |
No |
Yes |
Deterministic disposal (ARM-blocks) |
Yes (starting with Java 7) |
Yes |
Expressions and operators |
Java |
C# |
Arithmetic operators |
Yes |
Yes |
Logical operators |
Yes |
Yes |
Bitwise logic operators |
Yes |
Yes |
Conditional |
Yes |
Yes |
String concatenation |
Yes |
Yes |
Casts |
Yes |
Yes |
Boxing |
Yes; implicit |
Yes; implicit |
Unboxing |
Yes; implicit |
Yes; explicit |
Lifted operators |
No |
Yes |
Overflow control |
No |
Yes |
Strict floating point evaluation |
Yes; opt-in/out |
No |
Verbatim (here-)strings |
No |
Yes |
Exceptions |
Java |
C# |
Checked exceptions |
Yes |
No |
Try-catch-finally |
Yes |
Yes |
Arrays and Collections |
Java |
C# |
Abstract data types |
Yes |
Partial |
One-dimensional, zero-based index arrays |
Yes |
Yes |
Rectangular (multidimensional) arrays |
No |
Yes |
Jagged (arrays of arrays) arrays |
Yes |
Yes |
Non-zero based arrays |
No |
Some |
Unified arrays and collections |
No |
Yes |
Maps/dictionaries |
Yes |
Yes |
Sorted dictionaries |
Yes |
Yes |
Sets |
Yes |
Yes |
Sorted sets |
Yes |
Yes |
Lists/vectors |
Yes |
Yes |
Queues/stacks |
Yes |
Yes |
Priority queue |
Yes |
No |
Bags/multisets |
Yes |
Yes |
Metadata |
Java |
C# |
Metadata annotations/attributes |
Interface based |
Class based |
Positional arguments |
No; unless a single argument |
Yes |
Named arguments |
Yes |
Yes |
Default values |
At definition |
Through initialization |
Nested types |
Yes |
Yes |
Specialization |
No |
Yes |
Conditional metadata |
No |
Yes |
Preprocessing, Compilation and Packaging |
Java |
C# |
Namespaces |
Packages |
Namespaces |
Packaging |
Package |
Assembly |
Classes/assembly search path |
Yes; ClassPath |
No; /lib |
File contents |
Restricted
|
Free
|
Conditional compilation |
No |
Yes |
Custom errors/warnings |
No |
Yes |
Explicit regions |
No |
Yes |
Threading and Synchronization |
Java |
C# |
Threads |
Yes |
Yes |
Thread pool |
Yes |
Yes |
Task based parallelism |
No |
Yes |
Semaphores |
Yes |
Yes |
Monitors |
Yes |
Yes |
Thread local variables |
Yes |
Yes; ThreadStaticAttribute |
Native interoperability |
Java |
C# |
External/native methods |
Yes |
Yes |
Marshalling |
External glue code required |
Yes; metadata controlled |
Pointers and arithmetics |
No |
Yes |
Native types |
No |
Yes |
Fixed size buffers |
No |
Yes |
Explicit stack allocation |
No |
Yes |
Address-of |
No |
Yes |
Object pinning (fix variable to address) |
No |
Yes |
Platform support |
Java |
C# |
Linux |
Yes |
Yes |
Mac OS X |
Yes |
Yes |
Solaris |
Yes |
Yes |
FreeBSD |
Yes |
Partial |
AIX |
Yes |
Partial? |
iOS |
Yes |
Yes |
Windows |
Yes |
Yes |
Android |
Yes |
Yes |
Leave a Reply