日期:2014-05-20  浏览次数:20696 次

判断相同或相等 == .equals =
判断两个变量或两个值或其他是否相等的时候
请问
什么时候用“==”
什么时候用“=”
什么时候用“.equals()”

thanks

------解决方案--------------------
值相等就用==号,其他的就用.equals()相比较,=是用于赋值的。
------解决方案--------------------

我的做法是:值类型(整、浮点、布尔)用 "== "
其他的用.equals()
不使用 "= ",这是赋值。
------解决方案--------------------
如果你判断两个对象引用是否指向同一个对象用==
如果你判断两个对象的内容是否相同,用equals
=是赋值语句


Class A;

A a1 = new A( "1 ");
A a2 = new A( "1 ");
A a3 = a1; // 赋值
a1 == a3
a1 != a2
a1.equals(a2) is true



------解决方案--------------------
"== ",primitive
其他的一概用equals,除非你想判断是不是同一个对象时用 "== "(一般很少用,自认为!!)

"= "是附值,
------解决方案--------------------
首先排除 "= ",这个符号的返回值不一定是boolean,即不一定是真或假,(a=b)这个表达式的返回值是b的值,当然如果a,b都是boolean类型的话(a=b)这个表达式是boolean的
其次说 "== ",基本数据类型(不包括String)可用这个表达式来判断两个数据是否相等,如果用两个对象名来执行==,例如String s1= "a ",String s2= "b ",那么s1==s2返回的是假,不是真,因为==比较的是两个对象的引用是否相等,可以理解为比较两个指针本身的值是否相等,而不是指向的内容是否相等
如果需要判断内容是否相等就得用equals方法了(只用于对象,不用于基本数据类型),上面的s1,s2判等可用s1.equals(s2),这样返回的就是true了,当然这只是针对String来说的,其equals方法可以在你的类中被重写,也就是你自己定义一个规则来判断两个对象是否相等
------解决方案--------------------
支持ls,默认类型使用==,其它用equal,=是赋值
------解决方案--------------------
==是作为判断用的,两个引用的是否是一个对象
equals判断两个对象的内容是否相同
=是赋值语句

------解决方案--------------------
赋值用 "= "
判断两个数是否相等用 "== "
判断两个对象是否相等用 ".equals "
------解决方案--------------------
一句话

简单类型(原始类型,如int、long、boolean、char等)用“==”,这种类型还有一个特征,就是第一个字母一定是小写的。
复杂类型(对象类型,如Integer、Char、String等)一定要用“.equal”,这是因为如果用“==”,则比较的是对象所指的地址(在java中地址对程序员是透明的,但任何语言,包括java在底层都是通过地址来引用对象实例的),而不是对象的值。一般情况下,每一个复杂类型都有一个简单对象和其对应,如Integer对应int,Char对应char。而equal方法的作用就是比较Integer类中的int类型。因此,要用equal。

“=”和“==”、“equal”没关系。是赋值号。如a=b;将b的值赋给a。不要写错了啊。

“==”一般在C或C++中最好要这样写if(4==a) statement; 而if(a==4)容易写成if(a=4)。如果写成if(4=a)就会报错。
但在java中只有一种情况可能出现这种写错的情况。

boolean a = false;
if(a==true) System.out.println( "ab ");

boolean a = false;
if(a=true) System.out.println( "ab ");
------解决方案--------------------
=是用来赋值的。就比如
a=b就是将b的值给了a其实不是将里面的内容给了过去。而是将a在内存中的地址转到了b上面。
从而得到值都是相等的。
如果你生成 一个对象的话。如
Integer a =2;
double b = 2.000;
if(a.equals(b)){
System.out.println( "相等 ");
}
if(a == b){
System.out.println( "不相等 ");
}
他们的地址可能不一样。但是他们的值是一样的,你去测试这段话你就能得到你想要的答案了。
eques是比较内存中地址的内容的。如果不同的地址可以比较就如上面的。