变量的比较
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
有时你需要知道两个数据类型是否相等。很简单,只要使用==这个运算符就可以。有时你想要知道两个引用变量是否引用到堆上的同一个对象。这也很容易,也是使用==运算符。但有时你会需要知道两个对象是否真的相等(也就是对象所包含的值)。此时你就得使用equals()这个方法。相等的意义要视对象的类型而定。举例来说,如果两个不同String带有相同的字符,它们在涵义上是相等的。但对Dog来说,你认为尺寸大小或名字一样的Dog是相等的吗?所以说是否被视为相等要看对象类型而定。我们会在后面的草节继续探讨对象相等性的部分,但现在我们要知道的是==只用来比对两个变量的字节组合,实质所表示的意义则不重要。字节组合要么就是相等,要么就是不相等。
使用==来比对数据类型
这个运算式可以用来比较任何类型的两个变量,它只是比较其中的字节组合。
int a = 3;
byte b = 3;
if (a == b) { // true }
使用==来判别两个引用是否都指向同一对象。
要记得,这只是在比较字节组合的模样。此规则适用于引用与数据类型。因此==运算符对参照相同对象的引用变量会返回值。在此情况下我们还是无法得知字节组合的样式,但可以确定的是所参照的相同的对象。
Foo a = new Foo();
Foo b = new Foo();
Foo c = a;
if (a == b) { //false }
if (a == c) { //true }
if (b == c) { //false }
总之:使用==来比较两个primitive主数据类型,或者判断两个引用是否引用同一个对象。使用equals()来判断两个对象是否在意义上相等。
在线练习
{$ activeFileHint $}