- snjk
-
1、功能不同
"=="是判断两个变量或实例是不是指向同一个内存空间。
"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。
2、定义不同
"equals"在JAVA中是一个方法。
"=="在JAVA中只是一个运算符合。
例子:
Student student1 = new Student();
Student student2 = new Student();
System.out.println(student1.equals(student2));
System.out.println(student1 == student2);
3、运行速度不同
"=="比"equals"运行速度快,因为"=="只是比较引用。
"equals"比"=="运行速度要慢。
扩展资料
equals()方法特点:
1、自反性:x.equals(x)返回true;
2、对称性:若x.equals(y)为true,则y.equals(x)亦为true;
3、传递性:若x.equals(y)为true且y.equals(z)也为true,则x.equals(z)亦为true;
4、一致性:x.equals(y)的第一次调用为true,那么x.equals(y)的第二次、第三次、第n次调用也均为true,前提条件是没有修改x也没有修改y;
5、对于非空引用x,x.equals(null)永远返回为false。
参考资料:百度百科-equals
- 里论外几
-
equals()和==的区别:
1、对象类型不同
equals()是超类Object中的方法。
==是操作符。
2、比较的对象不同
equals()用来检测两个对象是否相等,即两个对象的内容是否相等。
==用于比较引用和比较基本数据类型时具有不同的功能。
扩展资料
java中所有类的父类是Object类,在Object中,已经定义了一个equals()方法,但是这个默认的equals()方法实际上也只是测试两个变量引用是否指向同一对象(即与 == 功能一样)。所以它并不一定能得到你所期望的效果。
通常我们需要自己将定义的类(就是上面的TestEqual)中的equals()进行重写。像Integer封装类就已经重写了Object中的equals()方法,直接可以拿来比较引用类型c和d指向的对象的值。
在Object类当中定义的equals方法:
public boolean equals(Object obj) {return (this == obj);}
- cloudcone
-
凡是比较基本类型只能用==,比较结果你看到的字面值相等就会相等,什么叫基本类型? byte,short,int,long,char,float,double这几种就是基本类型.基本类型不是对象所以不存在用equals比较.
凡是比较引用类型(对象),==比较的是两个引用是不是指向同一个内存地址,equals比较的是两个引用的字面值是不是相同,什么叫字面值?你能看到的值就是字面值,比如:String s="abc"; abc就是字面值.
基本类型的包装类型是对象类型,所以除非两个相同字面值的引用指向同一内存地址,值才会相等,比如:
Integer a=new Integer(3);Integer b=a;//互相赋值
这样用等号或equals比较都会得出true,记住一点,凡是两个引用都用了new去初始化,那==比较的结果都只会是false,互相之间有了赋值,比较结果就为true.
比较不好理解的一点:
String a="abc";
String b="abc";
a==b和a.equals(b);结果都会为true,因为没有用new去新建对象,其实a和b都指向的是同一个String对象"abc",改成:
String a=new String("abc");
String b=new String"abc");
后==的结果就是false了.总之参照上面的说明,不难理解.
- 真可
-
在比较字符型数据时,==比较的是内存中的地址,是对象的句柄
而equals()比较的是地址内的内容,比较的是对象.
- 蓓蓓
-
你只要记住
== 判断的是”地址“是否相等。
而equles判断的是“内容”是否相等。就可以了。
new一个对象就会不同。
具体应该自己动手试试看,这样最有效。
String s="123";
String s1="123";
String s3 = new String("123");
System.out.pirntln("s==s1");
System.out.pirntln("s==s3");
System.out.println("s.equles(s1)");
看看结果就自然明白了。
- 再也不做稀饭了
-
在基本数据类型中用的都是“==”比较的是两个对象的内容(包括数值和数据类型)
举个例子:int i=2; int j=2; char m="2";
System.out.println(i==j) true System.out.print(i==m) false
在引用数据类型中"=="和“equals”比较的都是两个对象的地址值
如果重写了equals方法,比较的就是两个对象的内容是否一致。
- max笔记
-
equals ;是比较两个对象的值是否相同
==: 是比较两个对象的hashcode是否相同
- S笔记
-
例子:
你叫 张三 你同学也叫张三
== 相当于问 你俩是一个人不?
equal 相当于问 你俩名字一样不
- 马老四
-
只是==是个运算符,equals是个方法,其实没什么区别。
然后==用于基础数据类型的时候,比较的值是否相等
用于引用类型的时候,==和equals一样都是比较地址值。
他们说的equals比较的是内容是否相等,那只是因为String类以及还有一些类重写了equals方法所体现出来的。在Object类中,equals方法内部实现就是用的==,也就是说一个引用类型如果在没有重写equals方法,却用equals进行比较的时候,用的就是Object类的equals方法,比较的是地址值。
所以严格来说,你可以理解为某些回答讲的是String的equals方法和==的区别,但是其实也不准确,因为String重写的equals方法要求类型相同,也就是说即使两个字符串内容相等,但是一个是String,一个是StringBuffer,那么用equals的结果也是false。
- 南yi
-
java?
- clou
-
==是一个判断是否相等的符号
equals()是判断内容的函数
对于两个变量进行判断时候,你首先要弄清楚它的类型.
对于刚学java的来说,对于这个很模糊.
比如:两个整型 int a=3 , b=4;
用if(a==b)和用if(a.equals(b))效果相同
然而,对于 两个字符串类型的 Sting a="chia",b="boy";
用if(a==b)和用if(a.equals(b))效果不相同
为什么呢?
其实java 讲得很清楚,对于属于基本类型它的存储方式与c语言的变量一样,是直接存储.
然后对于引用类型的来说,它相当于c语言中的 指针或数组.所以对于不属于基本类型的其他类型判断的时候应该用equals()来判断,而不是用==判断.
我也刚学java,应该是这吧!