equals跟=的区别 equals跟=的区别 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 equals是比较值是否相等,==是比较内存地址是否相等 equals是比较对象内容是否相等,而==是比较对象在内存中的地址是否相等(也就是同一个对象). 1)equals是比较对象内容是否相等(如何比较内容是否相等呢?)你可以重写对象的的equals方法,然后在equals方法里面做比较(你想怎么样定义对象相等标准都是随你的)。然后返回一个布尔类型的值。2)==是比较对象在内存中的地址是否相等(也就是同一个对象). equals 是方法,一般用于对象==用于比较变量 楼主问的是equals 和 = 的区别,为什么都要回答 == 呢。equals 是比较两个对象是否相等。= 是赋值运算符。 equals比较值本身==比较引用地址 3楼说的对equals是指内存中实际的内容==比较的是:是不是指向同一对象(内存中的内容),相当于c的指针 没有重定的话,这两个都比较是否是同一对象(内存里的地址)但有类重写equals()方法,使这方法比较内容(如String) 补充一下,如果类没有重写equals()方法,那么equals()与==的效果是一样的。 还有建议重写equals方法时同时重写hashCode方法。 还有建议重写equals方法时同时重写hashCode方法。 “==”一般用于基本类型数据比较,如int、char.“equals”一般用于对象比较,如String,自定义类型。 不对吧,equals()和==的效果怎么可能一样,你用String试试~ 兄弟你错了,String类里面已经重写了equals()。 == 用来比较变量是否相等,注意如果变量是引用类型的话比较的是引用地址是否相同.equals 是Object类型的方法,用来比较两个对象是否相等,注意如果你的Class需要比较是否相等就需要重写equals方法来实现,如果不重写equals方法与==效果相同. 说错的人真的很多广义的来说 equals和==都是比较内存地址是否相等,但String里面的equals方法只是一个特例String类里面的equals方法是被重写了的若不信的可以看jdk的源码String类的equals方法是比较值是否相等 但是,其他类的equals方法是直接使用的Object类的equals方法 我支持这个 还有就是Object 里的equals方法是和== 这个的比较方式是一样的所以当你要比较两个对象是否相等时要重写 equals方法同时 用String 类的equals方法时就不必重写了因为String已经重写了equals方法可以用来直接比较 两个字符串的值是不是相等。 equals是内容比较 ==比较引用 ==和equals()的区别,==是相等,equals()也是相等。public class TestEquals {public static void main(String[] args) {MyDate date1 = new MyDate(14, 3, 1976);MyDate date2 = new MyDate(14, 3, 1976);if ( date1 = = date2 ) {System.out.println("date1 is identical to date2");} else {System.out.println("date1 is not identical to date2");}if ( date1.equals(date2) ) {System.out.println("date1 is equal to date2");} else {System.out.println("date1 is not equal to date2");}System.out.println("设 date2 = date1;");date2 = date1;if ( date1 == date2 ) {System.out.println("date1 is identical to date2");} else {System.out.println("date1 is not identical to date2");}}}这个例子中的MyDate类代码如下public class MyDate {private int day;private int month;private int year;public MyDate(int day, int month, int year) {this.day = day;this.month = month;this.year = year;}public boolean equals(Object o) {boolean result = false;if ( (o != null) && (o instanceof MyDate) ) {MyDate d = (MyDate) o;if ( (day == d.day) && (month == d.month)&& (year == d.year) ) {result = true;}}return result;}public int hashCode() {return (day ^ month ^ year);}} 上述例子下载将这两个类放置到同一个文件夹中,只需要编译TestEquals类,就可以将MyDate一同编译了。然后执行java TestEquals查看结果。如图28-1所示图28-1也就是说date1 = = date2 虽然都是new MyDate(14, 3, 1976);但是new了两次就是两个对象了,不能==了。==是指引用是否相同。那么用equals()呢,equals()是Object里的方法,任何对象都继承Object。所以equals()方法也适用于所有的类。为什么这回date1和date2就equals了呢?equals()是指值是否相等。因为都是(14,3,1976)所以相等。我们把date1赋值给date2,结果当然是==了,都已经把引用赋给它了。还能不==吗? //通常情况下:== ==> equals ==> hashCode(反过来不行) equals()是比较对象相等的一种方法;== 是比较变量是否相等的;= 是赋值语句; 简单的说:equals()是比较对象所代表的值.==是比较对象是不是在内存中代表同一块区域. 1. == 用于numeric或者boolean 值得比较多时候 用于比较两个值是否相等2. == 用于对象比较对象是,是比较两个对象的地址时候相等3. equal()是在java.lang.Object类中定义的方法,但是在这个类中equal()方法跟“==”一样也是比较对象地址的,而不是用来比较对象的值; 因为所有类都是从这个类继承过来的,很多类都重写了equal()方法,把它重写成比较对象内容的方法,这就是为什么很多时候我们都认为 equal()是用来比较对象的内容的,但是要注意有些类并没有重写这个方法,那么对于这中类的对象来说,使用equal()方法与使用“==”是一样的 效果。 关键是看没有重写equals()方法 equals判断值是否相等=是赋值运算符==判断对象的内存地址是否相等 equals 返回 equals方法的布尔值。没有重写则使用Object的方法。一般 的 java 类都重写了 比如 String Integer 等。== 返回的就是Object的equals。当然 值类型 不能使用 equals。至于是否是内存地址显然不是。 equals如果不改写和=是一样的,都是比较内存地址!!!!!当然在string中因为已经系统改写过了,所以可以直接用 equals()用来对Date,File,String,以及8个基本类型的封装类进行判断的时候 和==不同 其他类型一样 equals比较内容==比较是否指向同一对象(即同一地址) 一般情况下,equals比较的是内容,而==比较的是内存地址 ==比较对象是否相等equal在Object中也是比较两个对象是否相等,只是不过在基类中重写了他的方法,所有比较的不一定是对象 JDK中写得很清楚啊,当且仅当两个非空引用obj1==obj2时,obj1.equals(obj2)==>true.否则false!那不就说明事实上equals方法未被重写的情况下,==和equals比较得都是引用对应的内存地址 equel比较的是引用,==比较的是内容 ==用==比较的前提是两个类型不相同的用==比较编辑器会报错,所谓类型不同是不兼容的类型如果一个 byte,一个int这当然可以了,因为他们会隐式转换,或是值类型比较或是对象类型比较1,比较的是值类型时,比较的是值2,比较对象类型比较的是地址如 string a="aaa";string b=a;这样他们就是相等的 equal比较的是值 他不管什么类型只要值相等就可以int a=2;String b="2";b.equal(a);返回也是真 ==是比较内存的地址。。equals默认的实现也是比较内存的地址,可以根据自己的需要重写equals方法来实现比较逻辑 equals是比较值,==是比较对象。 equals是比较值,==是比较对象。正解 object中的equals和==都是比较内存中的地址;只不过很多类中重写了equals(比如String) 请问怎么用正则匹配字符串“Catalog / Printables / Disney” JOptionPane.showConfirmDialog()登陆的问题 java TelnetClient 问题 了解下关于性能方面的问题 关于java客户/服务器Socket通信循环的问题。 初学者几个问题,请大家看看帮忙 关于Java日期类的困惑 Java,C#还是C++ java怎么链接mssqlserver 怎么在实现类里面获取接口的所有的实现对象 Java新手入门的30个基本概念 简单计算器程序,帮忙注释下
equals是比较对象内容是否相等,而==是比较对象在内存中的地址是否相等(也就是同一个对象).
1)equals是比较对象内容是否相等(如何比较内容是否相等呢?)
你可以重写对象的的equals方法,然后在equals方法里面做比较(你想怎么样定义对象相等标准都是随你的)。然后返回一个布尔类型的值。2)==是比较对象在内存中的地址是否相等(也就是同一个对象).
楼主问的是equals 和 = 的区别,为什么都要回答 == 呢。
equals 是比较两个对象是否相等。
= 是赋值运算符。
==比较引用地址
equals是指内存中实际的内容
==比较的是:是不是指向同一对象(内存中的内容),相当于c的指针
但有类重写equals()方法,使这方法比较内容(如String)
还有建议重写equals方法时同时重写hashCode方法。
还有建议重写equals方法时同时重写hashCode方法。
“equals”一般用于对象比较,如String,自定义类型。
不对吧,equals()和==的效果怎么可能一样,你用String试试~
equals 是Object类型的方法,用来比较两个对象是否相等,注意如果你的Class需要比较是否相等就需要重写equals方法来实现,如果不重写equals方法与==效果相同.
广义的来说 equals和==都是比较内存地址是否相等,但String里面的equals方法只是一个特例String类里面的equals方法是被重写了的
若不信的可以看jdk的源码
String类的equals方法是比较值是否相等
但是,其他类的equals方法是直接使用的Object类的equals方法
我支持这个 还有就是Object 里的equals方法是和== 这个的比较方式是一样的所以当你要比较两个对象是否相等时要重写 equals方法
同时 用String 类的equals方法时就不必重写了因为String已经重写了equals方法可以用来直接比较 两个字符串的值是不是相等。
public class TestEquals {
public static void main(String[] args) {
MyDate date1 = new MyDate(14, 3, 1976);
MyDate date2 = new MyDate(14, 3, 1976);if ( date1 = = date2 ) {
System.out.println("date1 is identical to date2");
} else {
System.out.println("date1 is not identical to date2");
}if ( date1.equals(date2) ) {
System.out.println("date1 is equal to date2");
} else {
System.out.println("date1 is not equal to date2");
}System.out.println("设 date2 = date1;");
date2 = date1;if ( date1 == date2 ) {
System.out.println("date1 is identical to date2");
} else {
System.out.println("date1 is not identical to date2");
}}}
这个例子中的MyDate类代码如下
public class MyDate {
private int day;
private int month;
private int year;public MyDate(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
public boolean equals(Object o) {
boolean result = false;
if ( (o != null) && (o instanceof MyDate) ) {
MyDate d = (MyDate) o;
if ( (day == d.day) && (month == d.month)
&& (year == d.year) ) {
result = true;
}}
return result;
}
public int hashCode() {
return (day ^ month ^ year);
}} 上述例子下载
将这两个类放置到同一个文件夹中,只需要编译TestEquals类,就可以将MyDate一同编译了。然后执行java TestEquals查看结果。如图28-1所示
图28-1
也就是说date1 = = date2 虽然都是new MyDate(14, 3, 1976);但是new了两次就是两个对象了,不能==了。==是指引用是否相同。
那么用equals()呢,equals()是Object里的方法,任何对象都继承Object。所以equals()方法也适用于所有的类。为什么这回date1和date2就equals了呢?equals()是指值是否相等。因为都是(14,3,1976)所以相等。
我们把date1赋值给date2,结果当然是==了,都已经把引用赋给它了。还能不==吗?
//通常情况下:
== ==> equals ==> hashCode(反过来不行)
== 是比较变量是否相等的;
= 是赋值语句;
equals()是比较对象所代表的值.
==是比较对象是不是在内存中代表同一块区域.
2. == 用于对象比较对象是,是比较两个对象的地址时候相等
3. equal()是在java.lang.Object类中定义的方法,但是在这个类中equal()方法跟“==”一样也是比较对象地址的,而不是用来比较对象的值;
因为所有类都是从这个类继承过来的,很多类都重写了equal()方法,把它重写成比较对象内容的方法,这就是为什么很多时候我们都认为
equal()是用来比较对象的内容的,但是要注意有些类并没有重写这个方法,那么对于这中类的对象来说,使用equal()方法与使用“==”是一样的
效果。
=是赋值运算符
==判断对象的内存地址是否相等
== 返回的就是Object的equals。当然 值类型 不能使用 equals。至于是否是内存地址显然不是。
当然在string中因为已经系统改写过了,所以可以直接用
==比较是否指向同一对象(即同一地址)
equal在Object中也是比较两个对象是否相等,只是不过在基类中重写了他的方法,所有比较的不一定是对象
用==比较的前提是
两个类型不相同的用==比较编辑器会报错,所谓类型不同是不兼容的类型
如果一个 byte,一个int这当然可以了,因为他们会隐式转换,或是值类型比较
或是对象类型比较
1,比较的是值类型时,比较的是值
2,比较对象类型比较的是地址
如 string a="aaa";
string b=a;
这样他们就是相等的
equal比较的是值 他不管什么类型只要值相等就可以
int a=2;
String b="2";
b.equal(a);
返回也是真
equals默认的实现也是比较内存的地址,可以根据自己的需要重写equals方法来实现比较逻辑