java关系操作符==和equals()区别
在java中包含的关系操作符有小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)。
对象的等价性:
==和!=适用所有对象,但是这两个操作符通常在比较对象的时候会出问题,下面一个列子:
public class Test {public static void main(String[] args) {String s1=new String("xxxx1");String s2=new String("xxxx1");System.out.println(s1==s2);System.out.println(s1!=s2);}
}
输出:false
true
在这里==和!=比较的是对象的引用。尽管对象的内容相同,但是对象的引用却是不同的,说以s1==s2是false。
如果想比较两个对象的实际内容是否相同,此时,必须使用所有对象都适用的特殊方法equals()。但这个方法不适用于“基本类型”,基本类型直接使用==和!=即可,列子:
public class Test {public static void main(String[] args) {String s1=new String("xxxx1");String s2=new String("xxxx1");System.out.println(s1.equals(s2));}
}
输出:true
但是也有例外!!!!!!
假如你创建了自己的类,就想下面这样:
public class Test {static int i;static class EqualsMethod2{public static void main(String[] args) {Test t1=new Test();Test t2=new Test();t1.i=t2.i=100;System.out.println(t1.equals(t2));} }
}
输出:false
这是由于equals()的默认行为是比较引用。所以除非在自己的新类中覆盖equals()方法,否则不可能表现出我们希望的行为。
大多数java类库都实现了equals()方法,以便用来比较对象的内容,而非比较对象的引用,
最后需要我们自己实现equals()方法,如下:
public class Test {static int i;static class EqualsMethod2{public static void main(String[] args) {Test t1=new Test();Test t2=new Test();t1.i=t2.i=100;System.out.println(t1.equals(t2));} }@Overridepublic boolean equals(Object obj) {// TODO Auto-generated method stubif(this==obj){return true;}if(obj instanceof Test){Test tx=(Test) obj;int t1=this.i;int t2=tx.i;if(t1==t2){return true;}else{return false;}}return false;}
}
这样,输出就是:true;
java关系操作符==和equals()区别相关推荐
- C#和Java中“==”和“equals”区别
C#中"=="和"equals"区别如下: 1 using System; 2 class Program 3 { 4 public static void M ...
- java之==和equals区别
2019独角兽企业重金招聘Python工程师标准>>> "=="操作符的作用 1.用于基本数据类型的比较 2.判断引用是否指向堆内存的同一块地址. equals所 ...
- Java之 == 和 equals() 区别 hashCode() 解析
equals和HashCode深入理解以及Hash算法原理 https://blog.csdn.net/qq_21688757/article/details/53067814 hashCode ht ...
- Java 中 == 与 equals 区别,再确认一遍?
碰到"equals"和"=="这两个字符,老感觉差不多:其实还是有一些区别的,今天小编带大家一探究竟! 01.==介绍 它的作用是判断两个对象的地址是不是相等. ...
- 【Java学习笔记之二十九】Java中的equals和==的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...
- java中==和equals的区别
package com.atguigu.java1;import java.sql.Date;/** * equals()和==的区别* *一.回顾==的使用*==:运算符* 1.可以使用在基本数据类 ...
- 面试必问一:Java 中 == 和 equals 的区别你知道吗
面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...
- Java基础之equals和==的区别深入解析
Java基础之equals和==的区别深入解析 以下是本文目录大纲 equals 和 == 的区别 equals 的重写 复写hashCode方法,有31这个数字的作用 1. equals 和 == ...
- java == hashcode,java中==和equals和hashCode的区别
java中==和equals和hashCode的区别 == 的作用: 基本类型:比较的就是值是否相同 引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址) equals 的作用: 引用类型:默 ...
- Java中的equals学习小结
Java中的equals是十分重要的,和= =要区别开来,最近在看孙卫琴的JAVA面向对象编程一书,觉得对其阐述写的不错,所以现在小结其 主要内容,而且要将 = =和 equals列为重要的对比概念来 ...
最新文章
- 种子文件多服务器,使用bitcomet制作torrent文件 [BitComet]
- python下什么版本-python版本有什么不同
- Servlet 工作原理解析--转载
- 1005 Spell It Right (20 分)——13行代码Ac
- PHP-cli 日志彩色玩法 echo \033[1;33m Hello World. \033[0m \n;
- Maven基础了解及配置信息
- YBTOJ洛谷P4298:祭祀(二分图匹配)
- junit4 单元测试框架_超越JUnit –测试框架的替代方案
- Java全能手册火了!Redis/Nginx/Dubbo/Spring全家桶啥都有!
- LeetCode 326. Power of Three
- 字体样式 font-family 0911
- 编程之美读书笔记1.2——中国象棋将帅问题
- 回顾经典: AlexNet, CaffeNet — Winner of ILSVRC 2012
- 小白怎么入行网络安全?看这一篇就够啦!
- 排列组合的写法_排列组合公式探究
- 动态控制水晶报表中数字栏位的值显示的小数位数
- 头条抖音后端技术3面,2021大厂Java面试题精选
- python数字识别kaggle论文_基于Python语言Kaggle的数据集分析
- 基于C#Winform+MySQL的商务娱乐会馆自助服务系统
- 做人晶莹剔透,做事水滴石穿