浅谈Java与C#的一些细微差别
由于工作和之前学习的原因,我需要同时使用java和c#两门语言。这几年,我也一直在使用j2ee平台和.net平台做开发。说起c#和java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别,而且很多时候我常常会搞混一些小细节。
例如:
在java中定义字符串,通常使用“string”(首字母大写)去定义,而在c#中,一般使用string(首字母小写)去定义。我经常同时使用microsoft visual studio 和eclipse同时开发时,经常把“字符串类型”的大小写搞混淆,呵呵。
再就是,java中定义integer类型,而c#中没有这个语法,但他们想要描述的其实都差不多,只是语法上的表现形式不同罢了。
常量声明:java 为此而使用 final 关键字,而 c# 使用关键字 const 或 readonly。
c# 提供了在 java 中可用的所有数据类型,并且增加了对无符号数和新的 128 位高精度浮点类型的支持。
在 java 中,对于每个基本数据类型,核心类库都提供了一个包装类来将其表示为 java 对象。例如,integer 类包装 int数据类型,而 double 类包装 double数据类型。
而在 c# 中,所有的基本数据类型都是 system 命名空间中的对象。对于每个c#数据类型,都提供一个简称或别名。例如,int 是 system.int32 的简称,而 double 是 system.double 的简写形式。因为 c# 将所有的基本数据类型都表示为对象,所以按照基本c#数据类型来调用对象方法是可能的。例如:
int i=10;
console.writeline(i.tostring());
还有在java中使用泛型集合list,通常这样去定义(使用c#的那种方式去定义,会编译不通过):
list<int> list = new arraylist<int>();
而在c#中使用泛型集合list,必须这样去定义,如果使用java中的那种方式,则编译不通过。
list<int> list = new list<int>();
上面描述的一些小例子,是比较典型的。而且大都是和语法,数据类型等相关的。由于本人水平有限,以及时间的关系,对于那些更细节及更深入的内容(比如:为什么必须这样去定义......),就暂时不细说了。后续我也会不断的整理,深入的研究,并更新。
本文只是抛砖引玉,希望读者能够用心去体会,热心的朋友也可以一起研究、总结,整理供大家一起学习并分享。