java中的equals方法与"=="运算符解说
在编程的时候,我们可能经常会用到equals方法,那么这个equals方法和运算符“==”有什么样的区别?
public class equal { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat c1=new Cat(1,2,3);
Cat c2=new Cat(1,2,3);
System.out.println(c1.equals(c2));
System.out.println(c1==c2); String s1=new String("HelloWorld");
String s2=new String("HelloWorld");
System.out.println(s1.equals(s2));
System.out.println(s1==s2); } } class Cat{
int color;
int height;
int weight; public Cat(int color,int height,int weight){
this.color=color;
this.height=height;
this.weight=weight;
}
}
这是一个很简单的程序,就足以看出两者的区别。程序运行的答案是 false,false,true,false. 为什么?
1、equals方法是属于Object类的,没有被重写之前,它比较的是两个对象的引用,只有当这两个引用指向的是同一个对象的时候,才是equals的,否则就不是!那么运算符“==”也是这样的原理,比较的是引用。因此前两个答案是false,false.最后一个答案也是false.
2、为什么第三个答案是true呢?因为sun公司在创造String类的时候,已经将它的equals方法重写了,只要是字符序列相同的两个String对象,它们就是equals的,因此答案三输出了true!
请大家多多补充指正,共同进步!!!
java中的equals方法与"=="运算符解说的更多相关文章
- 关于Java中的equals方法
关于Java中的equals方法 欢迎转载,但是请填写本人的博客园原址https://www.cnblogs.com/JNovice/p/9347099.html 一.什么是equals方法 equa ...
- 【转】彻底弄懂Java中的equals()方法以及与"=="的区别
彻底弄懂Java中的equals()方法以及与"=="的区别 一.问题描述:今天在用Java实现需求的时候,发现equals()和“==”的功能傻傻分不清,导致结果产生巨大的偏差. ...
- 一文搞懂--Java中重写equals方法为什么要重写hashcode方法?
Java中重写equals方法为什么要重写hashcode方法? 直接看下面的例子: 首先我们只重写equals()方法 public class Test { public static void ...
- Java中“==”与equals方法的区别
1. 用“==”比较两个变量,如果两个变量是基本类型变量,且都是数值类,则值相等就返回true 如果两个变量是引用型变量,则两个对象的地址一样,即指向同一个对象,则返回true 2.equals:St ...
- JAVA中复写equals方法
在JAVA中“==”用于比较两个引用对象的地址是否相同.但是如果我们想比较两个对象的内容是否相同,通常会覆写equals方法.equals方法用来比较两个对象的内容是否相等. package org. ...
- JAVA中“==”与equals()方法区别
equals 方法是 java.lang.Object 类的方法 有两种用法说明: ()对于字符串变量来说,使用"=="和"equals()"方法比较字符串时, ...
- 如何在Java中避免equals方法的隐藏陷阱
摘要 本文描述重载equals方法的技术,这种技术即使是具现类的子类增加了字段也能保证equal语义的正确性. 在<Effective Java>的第8项中,Josh Bloch描述了当继 ...
- 如何重写Java中的equals方法
Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型, ...
- java中的equals方法
这个方法首先比较的是两个对象的地址是否相同,如果相同直接返回true, 否则, (1)如果是string类型的先比较是否是string类型,是的话,再比较是否长度相同,相同的话再比较,每个字符是否相同 ...
随机推荐
- android ——网络编程
一.WebView 这个View就是一个浏览器,用于展示网页的. 布局文件: <LinearLayout xmlns:android="http://schemas.android.c ...
- ASP.NET Core on K8S深入学习(3-2)DaemonSet与Job
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 上一篇<3-1 Deployment>中介绍了Deployment ...
- eclipse安装STS插件遇到的问题
eclipse安装STS插件 第一次接触springboot,对于用惯了eclipse写代码的人来说,接受IDEA确实还要多花点时间去改变下,因为IDEA确实会节省下不必要的写代码时间.废话少说,直接 ...
- Lasso估计论文学习笔记(一)
最近课程作业让阅读了这篇经典的论文,写篇学习笔记. 主要是对论文前半部分Lasso思想的理解,后面实验以及参数估计部分没有怎么写,中间有错误希望能提醒一下,新手原谅一下. 1.整体思路 作者提出了一种 ...
- Docker进阶-资源管理Swarm+Portainer
Docker Swarm资源管理 Docker Swarm是Docker官方三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案. 使用它,用户可以将多个Do ...
- 强烈推荐 GitHub 上值得前端学习的开源实战项目
强烈推荐 GitHub 上值得前端学习的开源实战项目. Vue.js vue-element-admin 是一个后台前端解决方案,它基于和 element-ui 实现 基于 iView 的 Vue 2 ...
- python学习之路(3)---列表
列表定义: 列表就是一个数据的集合,列表是可以重复的,可以对存储的数据进行增删改查, 列表的写法: list_name = ['ljwang','wangwu'] 列表的嵌套 a = ['1',['2 ...
- GStreamer基础教程07 - 播放速率控制
摘要 在常见的媒体播放器中,通常可以看到快进,快退,慢放等功能,这部分功能被称为“特技模式(Trick Mode)”,这些模式有个共同点:都通过修改播放的速率来达到相应的目的. 本文将介绍如何通过GS ...
- 关于selenium自动化对窗口句柄的处理
首先什么是句柄?句柄就是你点击一个页面,跳转了一个新的窗口.你要操作的元素可能在原窗口上,也有可能在新窗口上. 看下图句柄1 句柄2 由这2张图可知,url不一样,证明他们是处于不同的界面,我要操作的 ...
- eruda.js 实现线上调出控制台
<script src="//cdn.bootcss.com/eruda/1.3.0/eruda.min.js"></script> 调用 eruda.in ...