累积下学习 C#时和 Java时的不同点

  1. ==和equals()方法的区别:

首先有一个观点: 这两个都是用来比较值是否相等的 ( 这里的值有时候指的是地址值, 有时候是存储的值; 下面将地址值称为地址, 存储的值称为值 )

在Java中:

对于值类型: ==比较的是值, equals()方法比较的也是值 ( 不过值类型需要手动装箱后才能调用方法 )

对于非 Object的引用类型: ==比较的是地址, equals()方法比较的是值 ( 在 Object 类中比较的是地址, 如果类中重写了 equals()方法, 就像根据重写的内容进行比较判断 )

在 C#中:

对于值类型: ==比较的是值, equals()方法比较的也是值 ( 这里的值类型调用方法会自动装箱 )

对于非Object类的引用类型: ==比较的是地址, equals()方法比较的是值 ( 在 Object 类比较的是地址, 如果类中重写了equals()方法, 就根据重写的内容进行比较判断 )

但是 C#中有个特例, 就是 string 类型, 对于 string类型, ==和 equals()方法比较的都是值, 而不是地址. ( 这点要牢记; 但是我还是习惯按照Java中的规则来比较两个string类型的内容是否相等, 就是调用equals()方法, 而不是使用== )

posted @ 2017-04-25 14:04  码上猿梦  阅读(158)  评论(0编辑  收藏  举报