C# 和 Java相同点和不同点总结

相同点:

1、C# 和 Java 都需要编译成中间代码,因此Java和C#性能上通常不如C++这类编程语言。(Java由javac编译成字节码,然后再由解释器逐条将字节码解释为机器码来执行。C#通过特定语言编译器将代码编译成  IL( intermediate language),然后通过 JIT(Just In Time) 将IL 翻译成机器码来执行。)

2、C# 和 Java 都是面向对象编程的语言,都能够实现面向对象的(封装,继承,多态)思想。

3、C# 和 Java都支持跨平台。

4、C# 中的异常处理与 Java 非常相似。C# 可以用 try...catch 构造来处理运行时异常,这和 Java 中是完全一样的。System.Exception 类是所有 C# 异常类的基类。(但C#一个catch只能捕获一个异常。)

5、C# 和 Java 都提供自动垃圾回收功能,从而使编程人员避免了跟踪分配的资源。

6、C# 和 Java 都支持单一继承和多接口实现。

7、C# 和 Java 都支持强引用和弱引用。

8、C# 和 Java 都支持lambda表达式。

不同点:

1、Java的源文件名必须和类名一致,而C#没有这个要求(但建议一致)。

2、C#中的命名空间是namespace类似于Java中的package,在Java中入包用import而C#中用using。

3、C# 和 Java 的数据类型基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写,还有布尔型,Java中是boolean,c#中是bool。

5、Java中常量用 static final修饰。在C#中,常量用const关键词声明。

6、Java中继承用关键字extends,而c#用":",调用父类的构造方法Java用super关键字,而c#用base关键字。

7、C# 和 Java 接口都用关键字interface定义,Java实现用关键字implements;c#用":"实现。在C#中,接口内的所有方法默认都是公用方法。在Java中,方法声明可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指定public修饰符是非法的。

8、C#中的访问修饰符与Java中的基本对应,但多出了一个internal。

  • public:成员可以从任何代码访问。
  • internal:成员只能从同一程序集的内部访问。
  • protected:成员只能从同一程序集内的派生类访问。
  • private:成员只能在当前类的内部访问。

9、C#没有高精度的decimal,Java中有BigDecimal。

10、C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词密封。

11、C#跟Java控制流语句类似,还有c#中的switch如果case后面有内容必须要有break;Java可以没有break;

12、C#中允许有指针,Java中无指针。

13、在Java中,数组的声明方法非常灵活,实际上有许多种声明方法都属于合法的方法。例如,下面的几行代码是等价的:

int[] x = { 0, 1, 2, 3 };
int x[] = { 0, 1, 2, 3 };

但在C#中,只有第一行代码合法,[]不能放到变量名字之后。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抽象类和接口在C#中有以下异同点: 相同点: 1. 都不能被实例化,只能通过实现它们的子类或实现类来创建对象。 2. 子类或实现类必须实现抽象类或接口中的所有方法才能被实例化。 3. 可以被其他类继承或实现。 异同点: 1. 抽象类是特殊的类,可以包含成员变量、方法、属性等,而接口只能包含方法、属性、事件和索引器的声明。 2. 一个类只能继承一个抽象类,但可以实现多个接口。 3. 抽象类可以有方法的实现,而接口只能有方法的声明。 4. 抽象类可以有字段和构造函数,而接口不能有字段和构造函数。 5. 接口可以被其他接口继承,形成接口的继承链,而抽象类不能被继承。 总结来说,抽象类更适合用于定义一些具有共同特征的类的基类,而接口更适合用于定义一些行为的规范,使得不同的类可以实现这些规范。 #### 引用[.reference_title] - *1* [Java抽象类和接口的异同点](https://blog.csdn.net/m0_64742984/article/details/124610167)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C# 抽象类与接口异同](https://blog.csdn.net/Monkey_Xuan/article/details/115915086)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值