什么时候应该用equals(),什么时候应该用==
2018-04-04 10:05
826 查看
1、equals是object的方法
2、String类型的
equals重写了object的方法,所以此方法比较的是内容,不比较内存地址
==比较内容和地址,因为String也属于引用数据类型
注意:String是特殊的在声明对象时可以写new也可以不写(不写默认就是new)
(总结:==比较内存地址和内容,equals方法被重写只比较内容)
3、基本类型,如int,char,long,boolean。
没有equals方法,只有==只比较值,因为基本数据类型存在栈里也不能new,最关键的一点是只有对象才能调方法
(总结:基本数据类型只有==进行比较,只比较值)
4、引用数据类型,如Integer,Byte,Long,Character,Boolean
引用数据类型是可以new的,而new出来的对象都会在堆中有开辟一个内存地址空间
通常用==比较对象时,比较的就是内存地址和内容
equals是用==判断两个对象是否相等,比较内存地址和内容,当两者都相等时才返回真
(总结:引用数据类型除String特殊外,equals和==都比较内存地址和内容)
以上是我个人的总结,如有错误或不足请大家及时指出!
下面我有几个问题
1.如果我有一个自定义类对象stu
那么我比较两个对象是否相等,在没重写equals和hashcod方法时,是否用equals和==都可以?(是)
2.如果我比较这个对象中的某个属性是否等于某内容时,这个比较是否就要看我自定义类中的属性类型了?(如果说其中的属性是基本数据类型就只能用==比较值。如果是引用数据类型equals和==都行,比较内存地址和内容。如果是String类型equals比较内容,==比较内存地址和内容)
2、String类型的
equals重写了object的方法,所以此方法比较的是内容,不比较内存地址
==比较内容和地址,因为String也属于引用数据类型
注意:String是特殊的在声明对象时可以写new也可以不写(不写默认就是new)
(总结:==比较内存地址和内容,equals方法被重写只比较内容)
3、基本类型,如int,char,long,boolean。
没有equals方法,只有==只比较值,因为基本数据类型存在栈里也不能new,最关键的一点是只有对象才能调方法
(总结:基本数据类型只有==进行比较,只比较值)
4、引用数据类型,如Integer,Byte,Long,Character,Boolean
引用数据类型是可以new的,而new出来的对象都会在堆中有开辟一个内存地址空间
通常用==比较对象时,比较的就是内存地址和内容
equals是用==判断两个对象是否相等,比较内存地址和内容,当两者都相等时才返回真
(总结:引用数据类型除String特殊外,equals和==都比较内存地址和内容)
以上是我个人的总结,如有错误或不足请大家及时指出!
下面我有几个问题
1.如果我有一个自定义类对象stu
那么我比较两个对象是否相等,在没重写equals和hashcod方法时,是否用equals和==都可以?(是)
2.如果我比较这个对象中的某个属性是否等于某内容时,这个比较是否就要看我自定义类中的属性类型了?(如果说其中的属性是基本数据类型就只能用==比较值。如果是引用数据类型equals和==都行,比较内存地址和内容。如果是String类型equals比较内容,==比较内存地址和内容)
相关文章推荐
- [转载] 什么时候应该使用 ==?什么时候应该使用 Equals?
- 什么时候应该使用 ==?什么时候应该使用 Equals?
- 什么时候使用指针?什么时候使用引用?什么时候应该按值传递?
- 什么时候应该使用 ==?什么时候应该使用 Equals?
- 什么时候应该使用 ==?什么时候应该使用 Equals?
- C++ 中什么时候应该在堆上分配资源,什么时候应该在栈上分配?
- 什么时候应该使用 ==?什么时候应该使用 Equals?
- 什么时候应该将形参定义为引用类型。什么时候不应该将形参定义为引用。
- 重写Java 的equals和hashcode方法的时候应该注意什么
- 什么时候应该使用 ==?什么时候应该使用 Equals?
- 什么时候应该使用 ==?什么时候应该使用 Equals?
- 什么时候应该使用==?什么时候应该使用Equals?(如何判断值相等还是引用相等。)
- 什么时候应该使用 ==?什么时候应该使用 Equals?
- servlet中什么时候该使用请求转发,什么时候该使用重定向
- 当自己要托管服务器的时候我们应该注意些什么?
- 什么时候应该使用SQL Server锁模式
- 什么时候应该避免写代码注释?
- 什么时候该用cacheAsBitmap,什么时候不该用
- 类的静态成员函数带来了什么好处,应该在什么时候使用?
- 技术面试的时候应该了解公司点什么