C# is a general-purpose, modern and object-oriented programming language pronounced as “C sharp”. It was developed by Microsoft led by Anders Hejlsberg and his team.
Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented etc. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of computer architecture.
Below are some major differences between C# and Java:
|Operator Overloading||C# supports operator overloading for multiple operators.||Java does not support operator overloading.|
|Runtime Environment||C# supports CLR(Common Language Runtime).||Java supports JVM(Java Virtual Machine).|
|API Control||C# API are completely controlled by Microsoft.||Java API are controlled by open community process.|
|Public Classes||In C#, there can be many public classes inside a source code.||In Java there can be only one public class inside a source code otherwise there will be compilation error.|
|Checked Exceptions||C# does not supports for checked exception. In some cases checked exceptions are very useful for smooth execution of program.||Java supports both checked and unchecked exceptions.|
|Platform Dependency||C# code is windows specific. Although Microsoft is working to make it global but till now the major system does not provide support for C#.||Java is a robust and platform independent language. Platform independency of Java is through JVM.|
|Pointers||In C# pointers can be used only in unsafe mode.||Java does not supports anyway use of pointers.|
|Conditional Compilation||C# supports for conditional compilation.||Java does not supports for conditional compilation.|
|goto statement||C# supports for goto statement.||Java does not supports for goto statement. Use of goto statement will cause error in Java code.|
|Structure and Union||C# supports structures and unions.||Java doesn’t support structures and unions.|
|Floating Point||C# does not supports strictfp keyword that means it result of floating point numbers may not be guaranteed to be same across all platforms.||Java supports strictfp keyword that means its result for floating point numbers will be same for various platform.|