==和equals的比较方式
关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系。——摘自《Java编程思想》
多读几遍之后你会发现——这不就是句废话么233333.(开个玩笑不要打我)
先说 == (等于关系操作符)
当你在使用这个关系操作符的时候要注意等号的两边分别是什么
1.同种基本数据类型的比较:
这个相信大家都知道,就是值的比较,相等就true,不等就false
2.同种类型对象与对象之间比较
Integer a =new Integer(100);
Integer b =new Integer(100);
System.out.println(a==b);
输出结果自然是false,这里比较的是a,b在内存中的地址,而这两个对象的地址自然是不同的
说到这里忍不住提一笔(int 这个数据类型有个小特例),看下面代码
Integer a =200;
Integer b =200;
Integer c =100;
Integer d =100;
System.out.println(a==b);
System.out.println(c==d);
这个输出的是false true 原因嘛看一下源码就了解了
public static Integer valueOf(int i) { //当你输入的int值不在他规定的区间里面时,他就重新new一个对象
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
3.引用数据类型和基本数据类型比较的时候它会将引用类型拆箱操作,进行值的比较。
int a =200;
Integer b =new Integer(200);
System.out.println(a==b);
结果是true
下介绍equals
/**
* 这个是jdk1.7 Integer 里面重写的equals方法
*
*/ public boolean equals(Object paramObject) {
if (paramObject instanceof Integer) // 如果你传的参数不是integer,直接返回false,
//当然如果是int型它会自动装箱成integer
return (this.value == ((Integer) paramObject).intValue());
return false; //如果是integer型的,那就很好,直接都转成int型用==比较数值返回相应的true/false
}
/*
* 这个是jdk1.7 String里面equals重写方法
*/ public boolean equals(Object paramObject) {
if (this == paramObject)//如果你传的是同一个对象,这里比较的是对象
return true; //既然都是同一个了,自然是true;
if (paramObject instanceof String) {//这里就是与上面一样判断是不是同一类型,不是就返回false;
String str = (String) paramObject; //将传入参数的值给Str,将str分解成单个的char型数据进行单个比较,全相等就是true
int i = this.value.length;
if (i == str.value.length) {
char[] arrayOfChar1 = this.value;
char[] arrayOfChar2 = str.value;
for (int j = 0; i-- != 0; ++j)
if (arrayOfChar1[j] != arrayOfChar2[j])
return false;
return true;
}
}
return false;
}
结论就是值的比较,当然前提是你比较的是同种类型的数据(仅这里把int和integer这样的看做一种);
转自——这么烂肯定自己写的
==和equals的比较方式的更多相关文章
- Servlet的生命周期+实现方式
1.Servlet的生命周期: (1)被创建: 默认情况下,Servlet第一次被访问时,被服务器创建.会调用init()方法. 一个 ...
- Java实现多线程的三种方式
Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.前两种方式启动的线程没有返回值 ...
- Java hashCode() 和 equals()的若干问题
原文:http://www.cnblogs.com/skywang12345/p/3324958.html 本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() ...
- Java hashCode() 和 equals()的若干问题解答
本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么? 3 hashCode() 的作用是什么? 4 hashCode() 和 equa ...
- 程序员必须搞清的概念-equals和=和hashcode的区别
1. 首先equals()和hashcode的介绍 equals 方法在非空对象引用上实现相等关系: * 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true. * 对称性:对于 ...
- Java中的hashCode() 和 equals()的若干问题解答
一.hashCode()的作用 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int ...
- C# == 和 Equals
先看一下解释 msdn对于 == 的解释: 对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false. 对于 string 以外的引用类型,如果两个操作数引 ...
- hashCode() 和equals() 区别和作用(转)
出处:https://www.jianshu.com/p/5a7f5f786b75 本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么 ...
- Java hashCode() 和 equals()的若干问题解答<转载自skywang12345>
第1部分 equals() 的作用equals()的作用是用来判断两个对象是否相等.equals()定义在JDK的Object类中.通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否 ...
随机推荐
- 基于mpvue搭建微信小程序
mpvue是美团开源的一套语法,语法与vue.js一致,快速开发小程序的前端框架.框架基于vue.js核心,修改了vue.js的runtime和compiler实现,使用此框架,开发者可以完全使用vu ...
- LibreOffice字体问题解决;从window复制到Ubuntu
拷贝或下载windows系统的Fonts字体集到对应的linux系统下;以ubuntu16.04系统为例. 1.进入windows系统,到C:WindowsFonts目录,复制拷贝自己需要的字体(也可 ...
- python bif
filter(过滤器): 语法: filter(function, iterable) funciton 为判断函数 iterable 为可迭代对象 ...
- 引擎设计跟踪(九.14.3.1) deferred shading: Depthstencil as GBuffer depth
问题汇总 1.Light support for Editor编辑器加入了灯光工具, 可以添加和修改灯光. 问题1. light object的用户互交.point light可以把对应的volume ...
- todos+增删改查+js练习
增删改查+js练习+es6字符串模板@haloBabyBear <!DOCTYPE html> <html lang="en"> <head> ...
- day05-数据类型与操作
- MQTT研究之EMQ:【JAVA代码构建X509证书】
这篇帖子,不会过多解释X509证书的基础理论知识,也不会介绍太多SSL/TLS的基本信息,重点介绍如何用java实现SSL协议需要的X509规范的证书. 之前的博文,介绍过用openssl创建证书,并 ...
- Java 锁的学习
个人学习整理,所有资料均来源于网络,非原创. 死锁的四个必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用.请求与保持条件(Hold and wait):已经得 ...
- PHP安装Eclipse与使用
PHP有非常多相当不错的开发工具,如Zend Studio.NetBeans.phpdesigner等,但对于习惯Java编程的程序员们来说,最经常使用的还要属Eclipse. 那么Eclipse能用 ...
- lenovo 笔记本ideapad 320c-15改装win7问题
lenovo 笔记本ideapad 320c-15改装win7问题: 去联想售后官网下载个Lenovo Utility驱动安装上,正常重启下,按Fn+F7,单击无线就能够开启无线网卡.Fn+F11.F ...