background image

相等,得到的结果也很可能是 false,而不是像.NET 一样,将基本类型的一些操作符作了重载,

使得 ==”

 

符号的行为看起来与基本类型完全一致。

在 java

中, Integer i=10,j=10;”使得 i==j 为 true,但如果 i 或者 j

任何一个使用 new 

Integer(10)”,那么 i==j 的值将是 false,因为 java 遇到 new 关键字就会开辟新的堆空间,这

 

样就导致两个封装类对象的引用地址不 同。同样的差异还出现在 String 类型。对此在 java 中强

烈推荐使用 equals

方法而不是 ==”

 

来比较封装类对象的值。

10:java 不支持 enum 枚举。只能对象定义静态数据。jdk1.5 已经可以支持了,以前的 jdk 不

支持。现在的 java 版本已经到 1.7 了,一般写 7.0 

11:final 类不能被继承,没有子类,final 类中的方法默认是 final

 

的。

final

 

方法不能被子类的方法覆盖,但可以被继承。

final

 

成员变量表示常量,只能被赋值一次,赋值后值不再改变。

final

 

不能用于修饰构造方法。

注意:父类的 private 成员方法是不能被子类方法覆盖的,因此 private 类型的方法默认是 final

 

类型的。

      但 c#的 sealed 好像只能修饰类(不,也能修饰,但要和 override 关键字一起使用)。不

过感觉 final

 

修饰方法和成员变量的功能没啥用啊。

12:java 里的 hashtable 线程安全,hashmap 不安全,但是 hashmap 效率更高。hashtable

不允许 null 值。c#里只有 hashtable  

13:ref,out 这样的关键字,java 是没有的,因为违反对象的编程理念:面向对象的是,所有

对象自己负责自己的工作,然后以方法的方式把这个功能暴露出来,需要执行相关操作者,自己

调用(don't call us,we will call you)。
14:http://msdn.microsoft.com/en-us/library/ms836794.aspx

这里讲了很多 java 和 c#的细节的区别。