相等,得到的结果也很可能是 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#的细节的区别。