什么时候应该用equals(),什么时候应该用==

转载 2018年04月16日 17:14:39

补充以供更多小白得到帮助,在此谢谢大家了!



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比较内容,==比较内存地址和内容)


什么时候应该使用 ==?什么时候应该使用 Equals?

Equals 方法只是在 System.Object 中定义的一个虚拟方法,它由任何选择执行该任务的类所重写。== 运算符是一个可由类重载的运算符,该类通常具有恒等行为。对于未重载 == 的引用类型,...
  • hychieftain
  • hychieftain
  • 2005-01-12 11:35:00
  • 2460

何时用继承?何时用组合

一、什么是继承?什么是组合 1.所谓组合是指新类由现有类的对象合并而成,称这种构造类的方式为组合; 2.所谓继承是指通过扩展已有类来获得新功能的代码重用方法。 二、二者各自的优缺点 1.组合 ...
  • niuyisheng
  • niuyisheng
  • 2013-08-03 20:31:34
  • 1123

java 安全管理器详解(2)

一、运行时代码权限检测由一个名为 java.lang.SecurityManager 的类负责监督类是否越权。在默认情况下,不会进行权限检测。可通过两种方式开启权限检测: 在启动时传递给 JVM 的、...
  • disiwei1012
  • disiwei1012
  • 2017-09-16 20:21:01
  • 230

应该在何时使用assert?

 很多人都拿不准什么时候该使用assert来判断函数的参数是否有效。例如:一个函数char* f(char* x),是应该 assert(x); 还是:if (x==NULL) return NULL...
  • wuxicn
  • wuxicn
  • 2009-11-05 21:29:00
  • 1333

路由事件的发展历程,有助于理解路由事件

  • 2011年06月30日 12:40
  • 634KB
  • 下载

Java中Array和ArrayList之间的区别

简单理解 ArrayList是一种可以自动扩充的Array。 Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大小),而ArrayList可以只是先声明。 Array只能存储同构的...
  • sinat_32393077
  • sinat_32393077
  • 2017-05-31 14:43:49
  • 204

什么时候使用redis

转自:http://www.cnblogs.com/breg/archive/2013/07/29/3222066.html Redis使用最佳方式是全部数据in-memory。Re...
  • GOon_star
  • GOon_star
  • 2017-03-08 00:27:30
  • 251

什么时候选择TCP,什么时候选择UDP?

在接到网络软件开发项目的时候,首先要考虑到的一个大问题就是,究竟应该使用tcp还是udp,或者是采用混合的做连接来实现, 这是在搭建软件整体框架的时候考虑的最多的地方,也是最困难的选择,每一个新手基...
  • yjxsdzx
  • yjxsdzx
  • 2017-05-14 10:54:53
  • 779

事件和路由事件概述

我们将介绍在使用 C#、Visual Basic 或 Visual C++ 组件扩展 (C++/CX) 作为编程语言并使用 XAML 进行 UI 定义时,针对 Windows 运行时应用的事件的编程概...
  • shengxiaweizhi
  • shengxiaweizhi
  • 2015-07-22 22:23:19
  • 403

java v4(Java初学者应该用的教材)

  • 2011年08月16日 12:42
  • 3.87MB
  • 下载
收藏助手
不良信息举报
您举报文章:什么时候应该用equals(),什么时候应该用==
举报原因:
原因补充:

(最多只允许输入30个字)