==和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类中.通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否 ...
随机推荐
- auto-encoder小记
1.使用auto-encoder生成手写数字 2.中间code层使用二维向量,使用L2norm处理中间层数据 3.从[-1,1]的矩形框中等间隔选取100个坐标点 作为code值 最终生成图像 后期应 ...
- Java_03选择结构
1.if 选择结构 格式: if(判断条件){ // 语句块 }else if(判断条件){ // 语句块 2 }else{ // 语句块 3 } 当 if 关键字后的一对大括号里只有一个语句时,可以 ...
- Docker切换国内镜像
本人是Ubuntu系统 Ubuntu 18.04 安装 Docker-ce 1.更换国内软件源,推荐中国科技大学的源,稳定速度快(可选) sudo cp /etc/apt/sources.list / ...
- JS ajax请求参数格式( formData 、serialize)
$("#importBtn").click(function(){ if($("#conId").val() == ""){ alert(& ...
- IO练习
#IO操作 import time; fileObj = open('log.txt','a'); while(True): data = input('请输入要写入的内容 : '); if data ...
- Java 8-Lambda表达式、方法引用、标准函数接口与流操作、管道操作之间的关系
1.Lambda表达式与接口之间的关系 只要Lambda表达式的声明形式与接口相一致,在很多情况下都可以替换接口.见如下代码 Thread t1 = new Thread(new Runnable() ...
- HTML prefetch 预加载无效的记录
在link中新增: <link rel="prefetch" href="/view/search.html" /> 预加载会将内容缓存到浏览器, ...
- python 云打码 http接口
import http.client, mimetypes, urllib, json, time, requests ######################################## ...
- iOS 12 tabbar 从二级页面返回时,出现跳动解决办法
APP push一个界面,返回的时候,tabBar上的图标和文字出现一个从上往下的神奇动画 经过测试发现,如果使用系统OS12.1 UINavigationController + UITabBarC ...
- Python通过百度Ai识别图片中的文字
版本:python3.7 工作中有需要识别图片中的汗字,查看了半天大神们的博客,但没找到完全可以用的源码,经过自己的实践,以下源码可以实现: 创建应用 首先你需要登录百度AI,选择文字识别,创建一个应 ...