今天在写业务的时候用==比较了枚举类型,被大哥改成了equals,所以来学习学习。
顺便了解一下==和equals的区别。
==对内存地址进行比较,equals对字符串的内容进行比较。
==判断的是两个变量指向的是不是同一个内存空间,equals判断的是两个变量指向内存空间的值是否相等。
==指引用是否相同,equals指的是值是否相同。
看一个案例。
有点懵,但是点开Integer的底层后可以看到。
当i >= -128 并且i <= 127时,会返回缓存中已经存在的Integer对象,如果当这个值大于127或者小于-128的时候会创建一个Integer的对象,而这个对象跟之前的就不是同一个,他会有一个新的内存地址,这时==做判断此时就失效了,==只适用在-128至127之间进行判断,超过这个范围就会失效。
所以在做业务的时候要注意一下,在公司如果这个地方出了错可就是大问题了。