SECLAB技术与学术社区

 找回密码
 立即注册
查看: 387|回复: 0

java与c#

[复制链接]

13

主题

34

帖子

117

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117
发表于 2016-12-27 22:39:05 | 显示全部楼层 |阅读模式
C#与JAVA的相同:
1、支持跨平台,具有平台无关性。C#和JAVA语言的编译结果是独立于计算机和编程语言的,可执行文件可以在受管理的执行环境中执行;
2、取消指针操作,内存管理采用自动的垃圾回收机制;
3、只支持单重继承,要实现与多重继承类似的功能,必须通过接口来实现;
4、都没有全局变量和全局函数,所有的变量和函数都属于某个类所有;
5、类型安全,所有的值都必须先初始化后才能使用,没有不安全的类型转换;
6、foreach语句遍历数组和集合;
7、类都是从Object类派生而来,类的对象通过关键字new生成;
8、都支持对数组和字符串边界的严格检查,不会出现边界溢出的情况;
9、 C#和JAVA语言中的if语句都不允许采用整数作为判断条件;


C#与JAVA的不同:
1、常量声明,java中好用 final static,C#中用const。
2、switch语句,Java中,switch语句只能处理整数。但C#中的switch语句不同,它还能够处理字符变量。
3、C#没有>>>移位操作符。
4、公共类入口,都是公用静态方法,java中小写main,C#中大写Main,并且C#支持重载Main函数。
5、goto关键词 ,Java保留但不用goto关键词。在C#中,goto允许你转到指定的标签。不过,C#以特别谨慎的态度对待goto,比如它不允许 goto转入到语句块的内部。在Java中,你可以用带标签的语句加上break或continue取代C#中的goto。
5、最终类 ,由于C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词;
6、接口,都使用关键字interface声明,一个接口可以扩展一个或者多个其他接口,java中用extends关键字,C#中用:符号。java中支持域,C#中的接口不能包含域(Field)。,在C#中,接口内的所有方法默认都是公用方法。在Java中,方法声明可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指 定public修饰符是非法的。
7、index ,C#提供index来给对象加上索引的功能,从而用与处理数组类似的方式来处理对象,JAVA语言则不支持index;
8、 C#中的命名空间,也相当于JAVA中 的包。C#中的命名空间是用using来导入,并且只能到包的级别(如:using System;),而JAVA中包用iport来导入并可以到类的级别(如:import javax.swing.JFrame)。   C#中命名空间的创建为 namespace 命名空间名称{…},类是写在命名空间的一对大括号内的,而JAVA中的包创建为package 包名;,类是和包分开写的。
9、 C#的原文件扩展 名为.cs,JAVA中的原文件扩展名为.java。
10、 C#中用 csc.exe来编译原文件,而JAVA中用javac.exe来编译原文件。
11、参数传递:java中只有值传递,C#中有四种分别是值传递,引用传递,输出参数,参数数组。
在 C# 中要通过引用方式传递数据,需使用关键字 ref 。使用方法是在定义方法时,在按引用传递的形式参数的类型说明符前加上关键字 ref ,在调用方法时,在按引用传递的实际参数之前加上关键字 ref 。
12、 is和as操作,C#中的is操作符与Java中的instanceof操作符一样,两者都可以用来测试某个对象的实例是否属于特定的类型。在Java中没有与C#中的as操作符等价的操作符。as操作符与is操作符非常相似,但它更富有“进取心”:如果类型正确的话,as操作符会尝试把被测试的对象引用转换成目标类型;否则,它把变量引用设置成null。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

SEC LAB ( 赣ICP备15007304号 )

GMT+8, 2017-5-26 17:14 , Processed in 1.281283 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表