==和equals详解+例子
一开始遇见==和equals我也是分不清,后来看了很多博客,收益匪浅,
担心以后给忘了,所以写下这个,以后复习可以用。
(有哪里写得不对的,希望可以留言帮忙改进,大家一起共同进步)
一、Java数据类型一共分为两大类:基本数据类型、引用数据类型:
1.基本数据类型:
整数型:
整型:byte、short、int、long
浮点型:float、double
字符型:char
布尔型:boolean
2.引用数据类型:
数组、类、接口
二、基本数据类型的比较
基本类型的比较只能用==比较,没办法用equals比较,没有该方法,包装类才有

三、基本类型和包装类型的比较
装箱:int-->Integer,拆箱:Integer-->int
1.基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较
2.关于equals的比较,我们先看下它的源码
这个是Object的equals源码,很明显是比较两个的地址是否一样

这个是Integer的equals,说明他重写了object的源码,他是先比较类型是否一样,
如果类型不一样直接返回false,如果类型一样,他会先进行拆箱后再比较。

int和Integer的比较实例
四、String类型的比较
1.String关于==的比较是看他的地址是不是一样,但是String他比较特殊,他有个字符串常量池,直接定义字符串(不是new的情况)
他会先到字符串常量池看之前有没有,有就直接指向之前的。没有就创建(指的是new)。
2.equals:因为String继承了Object的equals并重写了equals.看下面的源码,我们可以看出来,他是先判断是不是同一对象,如果是直接返回true,
如果不是他就比较内容是否一致。

String比较实例

五、引用类型的比较
引用类型的比较最直接无论是==还是equals都是比较地址
这是equals源码

比较案例

==和equals详解+例子的更多相关文章
- hashCode与equals详解
在工作中写业务类通常都会重写hashCode与equals方法,而这两个方法的区别与用途也常常被问道.平时也只是大概知道这二者的用途,今天闲下来,查阅资料加上自己的理 解,总结记录下. hashCod ...
- java中hashCode()与equals()详解
首先之所以会将hashCode()与equals()放到一起是因为它们具备一个相同的作用:用来比较某个东西.其中hashCode()主要是用在hash表中提高 查找效率,而equals()则相对而言使 ...
- hashCode、equals详解
hash和hash表是什么? hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值,这个时候,我们就需要知道另一个东西,hash表,通过hash算法得到的hash值 ...
- Java中 == 和 equals()详解
java中的数据类型分为两种: 一 .基本数据类型: byte.short.int.long.float.double.char.boolean 比较它们需要用 == ,比较的是它们的值是否相等 ...
- 深入java面向对象一:==和equals详解
本文从多篇博客笔记融合而来,系转载,非原创,参考: 1. http://www.cnblogs.com/e241138/archive/2012/09/16/2687981.html 2. htt ...
- ASIHTTPRequest 详解 例子
目录 目录 发起一个同步请求 创建一个异步请求 队列请求 请求队列上下文 ASINetworkQueues, 它的delegate提供更为丰富的功能 取消异步请求 安全的内存回收建议 向服务器端上传数 ...
- 接口详解例子代码(附Java1.8的接口新特性)
接口,与抽象类类似但是区别也很大,他们都是标签,用来提醒父类一定要实现的类里创建抽象方法.而接口类可以implements 多个接口,抽象类则只能父类只能继承一个抽象类,与抽象不同的是它不是继承组合关 ...
- GBDT详解例子
https://blog.csdn.net/zpalyq110/article/details/79527653
- Ngnix服务器详解(Windows版本)(非原创)
文章大纲 一.Ngnix简介二.Ngnix安装三.Ngnix之静态资源访问四.Ngnix正向代理与反向代理五.Ngnix之虚拟主机配置六.Ngnix之负载均衡七.Ngnix之访问控制八.Ngnix日志 ...
随机推荐
- ubuntu 安装 pythonenv
This will get you going with the latest version of pyenv and make it easy to fork and contribute any ...
- 中文代码示例之Vuejs入门教程(一)
原址: https://zhuanlan.zhihu.com/p/30917346 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示 ...
- UTC 通用格式时间 转换为 时间戳,并格式化为2017-01-01 12:00:00
在使用阿里云oss获取文件列表是,发现时间格式是这样的 2016-09-20T13:45:04.000Z (尼玛,是什么鬼), 经过度娘的解答,发现这就是传说中的 UTC通用格式时间 问题来了,怎么转 ...
- volatile关键字是如何起作用的?
关键字volatile是Java虚拟机提供的最轻量级的同步机制,但是在平时的项目里面,遇到需要多线程的时候更多地使用的是synchronized关键字来进行同步.个人而言,更多的原因是对volatil ...
- [js高手之路]面向对象版本匀速运动框架
这篇文章的效果,需要看过以下3篇文章: [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件 [js高手之路]匀速运动与实例实战(侧边栏,淡入淡出) [js高手之路]打造通用的匀速运动框架 ...
- 第十四章:Python の Web开发基础(一) HTML与CSS
本課主題 HTML 介绍 CSS 介绍 HTML 介绍 HTML 的头部份,重点: 定义HTML 的编码:<meta charset="UTF-8"/> 定义标题: & ...
- xssgame挑战wp
前言 昨晚做了一些xss的题目,有点上瘾了,今天想着再找一些来做做. google了一下,发现了不少,找到这么一个. 地址: https://xss-game.appspot.com 这是一个国外的x ...
- ERP报错:所在的期间无效,但又无法新增账套期间。
问题: 进入2018新年月,客户在新增单据的时候,报错:日期[2018-01-03]所在的期间无效 正常解决方法 过账期间里面设置一下路径:管理----期间与结账----过账期间设置 先设置年期间-- ...
- MySQL数据库操作
一创建数据库 1 语法(help create database) CREATE DATABASE 数据库名 charset utf8; 2 数据库命名规则: 可以由字母.数字.下划线.@.#.$ 区 ...
- 使用Java内置的Http Server构建Web应用
一.概述 使用Java技术构建Web应用时, 我们通常离不开tomcat和jetty之类的servlet容器,这些Web服务器功能强大,性能强劲,深受欢迎,是运行大型Web应用的必备神器. 虽然Jav ...