==和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源码
比较案例
最新文章
- Java Attach API
- ajax 异步插入图片到数据库(单图上传)
- Gradle学习系列之二——创建Task的多种方法
- [ZZ]计算机视觉、机器学习相关领域论文和源代码大集合
- Little Bishops uva861
- Laravel之路——事务
- Parallel.Foreach的并发问题解决方法-比如爬虫WebClient
- Ionic如何实现单选二级菜单切换
- Fiddler之iOS手机抓包实战操作
- C++ 实现简单命令行学生管理系统
- Linux 驱动——LED(驱动分离分层)
- 使用数组制作简易的用户管理系统【java】
- 个人实战演练全过程——No.1 最大连续子数组求和
- Jedis 操作 Redis 工具类
- __attribute__的一些相关属性
- Java 持久化操作之 --XML
- 转载:Systemd 服务配置文件
- python re 实例
- html中的body和head有什么区别??
- 安装完CentOS可以不做的事
热门文章
- js 向form表单中插入数据
- mysql也有complex view merging 这个特性(5.6 , 5.7)
- Travis CI实现持续部署
- 测试BUG记录模板(供参考)
- class java.awt.HeadlessException : No X11 DISPLAY variable was set, but this program performed an operation which requires it.
- [js高手之路] es6系列教程 - new.target属性与es5改造es6的类语法
- Java的按位操作符
- 前端安全之XSS攻击及防御
- ASP.NET Core 一步步搭建个人网站(5)_Api模拟和网站分析
- golang其实也可以优先调度