当前位置: 首页 > news >正文

java和c#的相似及区别基础对比

用过十几种语言,但是java和c#是最为重要的两门。c#发明人曾主导开发了pascal和delphi,加入微软后,参考了c++和java完成了c#和net。大家用过java或c#任意一种的,可以通过本篇文章快速掌握另外一门语言。

基础语法

  • 变量声明:Java和C#都使用type variableName
  • 条件语句:Java和C#都使用ifelse ifelse
  • 循环:Java和C#都支持forwhiledo-while
  • 数组:Java和C#都使用int[] myArray = new int[10]

类和对象

  • 类定义:Java和C#都使用public class ClassName { }
  • 对象创建:Java和C#都使用ClassName obj = new ClassName();
  • 构造函数:Java和C#都支持构造函数,用于创建对象时初始化对象。
  • 继承:Java使用class Child extends Parent { },C#使用class Child : Parent { }
  • 多态:Java和C#都通过方法重写实现多态。

接口和抽象类

  • 接口定义:Java和C#都使用public interface InterfaceName { }
  • 实现接口:Java使用class ClassName implements InterfaceName { },C#使用class ClassName : InterfaceName { }
  • 抽象类:Java和C#都使用public abstract class AbstractClassName { }

访问修饰符

  • 公共:Java和C#都使用public
  • 私有:Java和C#都使用private
  • 受保护:Java和C#都使用protected
  • 包私有:Java默认访问级别(无修饰符),C#使用internal

异常处理

  • try-catch:Java和C#都使用try { } catch (ExceptionType e) { }
  • finally:Java和C#都使用finally { }
  • 抛出异常:Java和C#都使用throw new ExceptionType()

事件处理

  • Java:使用监听器(Listeners)和事件(Events)模型。
  • C#:使用事件(Events)和委托(Delegates)。

泛型

  • Java:使用<T>来定义泛型类、接口和方法。
  • C#:使用<T>来定义泛型类、接口、方法和委托。

集合

  • Java:有java.util包,包含ListSetMap等接口和ArrayListHashSetHashMap等实现类。
  • C#:有System.Collections.Generic命名空间,包含List<T>HashSet<T>Dictionary<TKey, TValue>等泛型集合类。

并发和多线程

  • Java:使用java.lang.Thread类和java.util.concurrent包来支持多线程和并发。
  • C#:使用System.ThreadingSystem.Threading.Tasks命名空间来支持多线程和异步编程。

文件输入/输出

  • Java:使用java.iojava.nio包进行文件操作。
  • C#:使用System.IO命名空间进行文件操作。

特性和框架

  • Java:有Spring Boot、Hibernate、Java EE等企业级框架。
  • C#:有ASP.NET Core、Entity Framework等企业级框架。

应用程序入口

  • Java:使用public static void main(String[] args)作为应用程序入口。
  • C#:俺也一样。

包和命名空间

  • Java:使用package关键字定义包。
  • C#:使用namespace关键字定义命名空间。

依赖管理

  • Java:使用Maven或Gradle来管理项目依赖。
  • C#:使用NuGet包管理器来管理项目依赖。

编译和运行

  • Java:源代码编译成字节码(.class文件),运行在Java虚拟机(JVM)上。
  • C#:源代码编译成中间语言(IL),运行在.NET运行时(CLR)上。

语言特性

  • Java:支持标记接口、匿名内部类、检查型异常等。
  • C#:支持属性(Properties)、索引器(Indexers)、事件(Events)、委托(Delegates)、异步编程模式(async/await)等。

程序集(Assemblies)

  • Java字节码:Java编译器将源代码编译为平台无关的字节码,存储在.class文件中。
  • C# DLL/EXE:C#编译器将源代码编译为中间语言(IL),并打包为程序集(Assembly),存储在.dll(动态链接库)或.exe(可执行文件)中。

http://www.dtcms.com/a/131201.html

相关文章:

  • 如何实现语音智能客服(一)
  • Linux上位机开发实践(OpenCV算法硬件加速)
  • 探索R语言:在线学习资源汇总
  • UE5蓝图之间的通信------接口
  • 安装VS Code 服务器运行版本
  • 第二十四:查看当前 端口号是否被占用
  • 开源 2D 横版跳跃游戏 SuperTux
  • 【PyQt】俄罗斯方块的小程序开发
  • Django 使用 Celery 完成异步任务或定时任务
  • 【Linux】进程创建、进程终止、进程等待
  • Lua 中的 table 类型详解
  • 深入解析 HTML 中 `<script>` 标签的 async 和 defer 属性
  • 高并发短信系统设计:基于SharingJDBC的分库分表、大数据同步与实时计算方案
  • autogenstudio设置
  • Redisson的红锁,分段锁,公平锁,联锁。。。。。。
  • 信息安全管理与评估2021年国赛正式卷答案截图以及十套国赛卷
  • 高负载WEB服务器--Tomcat
  • 深入理解 v-show 指令及其使用方法
  • 【本地图床搭建】宝塔+Docker+MinIO+PicGo+cpolar:打造本地化“黑科技”图床方案
  • github进阶使用教程
  • .net执行脚本:通过字符串的形式来执行按钮的点击操作
  • 【Python实时数据处理】流式计算与异步编程实战
  • 微服务之protobuf:下载、语法和使用一站式教程
  • Linux文件传输:让数据飞起来!
  • vue2项目集成Tailwindcss
  • 6.1 GitHub亿级数据采集实战:双通道架构+三级容灾设计,破解API限制与反爬难题
  • 青少年编程与数学 02-016 Python数据结构与算法 18课题、组合数学算法
  • Ubuntu 安装 Cursor AppImage 到应用程序中
  • n8n 本地部署及实践应用,实现零成本自动化运营 Telegram 频道(保证好使)
  • linux 如何查看mac地址?喂饭版