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 comment