【重走Android之路】【番外篇】关于==和equals
1、"=="运算符
1.1 如果a,b都是基本数据类型
- a,b不兼容,无法比较
- a,b兼容,比较栈内的数值
//Code:
int a = 1000;
int b = 1000; //Result:
a == b : true
1.2 如果a为基本数据类型,b为引用类型
- a,b不兼容,无法比较
- a,b兼容,则比较的仍然是a、b在栈内的内容
//Code:
int a = 1000;
Integer b = 1000;
Integer c = new Integer(1000); //Result:
a == b:true
a == c:true
1.3 如果a、b均为引用类型
- a、b不兼容,无法比较
- a、b兼容,则比较的是对象a、b在栈内保存的地址(不考虑null情况)
// 简单说,就是比较a、b是否指向的是同一个实例(内存块)。
Code:
String a = "Test";
String b = "Test";
String c = new String("Test");
String d = new String("Test"); Integer x = 1000;
Integer y = new Integer(1000);
Integer z = new Integer(1000); Result:
a == b:true
a == c:false
c == d:false x == y:false
y == z:false
// 上例中,"Test"被放在常量池中,对象a、b的地址均指向该常量。c和d则在堆内重新开辟内存分别存储"Test",所以c和d指向的内存地址也不相同。
2、equals方法
2.1 如果a、b都是基本数据类型,不可比较
2.2 如果a为基本数据类型,b为引用类型
- 如果a、b不兼容,则结果必为false
- 如果a、b兼容,则比较a在栈内的数值和b在堆内存中的值是否相同
//Code:
int a = 1000;
Integer b = 1000;
Integer c = new Integer(1000); //Result:
b.equals(a):true
c.equals(a):true
2.3 如果a、b均为引用类型
- 如果a、b不是相同实例,则结果必为false
//Code:
Object a = new String("Test");
Object b = new StringBuilder("Test"); //Result:
b.equals(a):false
- 如果a、b是相同实例,则比较a、b在堆内存中的值是否相同
//Code:
String a = "Test";
String b = "Test";
String c = new String("Test");
String d = new String("Test"); Integer x = 1000;
Integer y = new Integer(1000);
Integer z = new Integer(1000); //Result:
b.equals(a):true
c.equals(a):true
c.equals(d):true y.equals(x):true
y.equals(z):true
【重走Android之路】【番外篇】关于==和equals的更多相关文章
- 【重走Android之路】【番外篇】有关于null的一些知识点
[重走Android之路][番外篇]有关于null的一些知识点 1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ...
- 【重走Android之路】【路线篇(二)】知识点归纳
[重走Android之路][路线篇(二)]知识点归纳 参考:http://blog.csdn.net/xujing81/article/details/7313507 第一阶段:Java面向对 ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
[重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...
- 【重走Android之路】【开篇】序
[重走Android之路][开篇] [序] 本人Nodin,偶尔也叫MoNodin,朋友们都喜欢叫我丁,还有个笔名叫陌上幽人,文艺时叫恋风,发奋时叫不肯腐烂的土壤...也许你觉得我 ...
- 【重走Android之路】【路线篇(一)】路线图
总结归纳了J2SE和Android的知识点,自己制订了一套详细的路线图,其中肯定有考虑不全和不合适的地方,欢迎各位大牛批评指正. 详细路线图如下:
- Apache Cordova开发Android应用程序——番外篇
很多天之前就安装了visual studio community 2015,今天闲着么事想试一下Apache Cordova,用它来开发跨平台App.在这之前需要配置N多东西,这里找到了一篇MS官方文 ...
- Monkey源代码分析番外篇之Android注入事件的三种方法比較
原文:http://www.pocketmagic.net/2012/04/injecting-events-programatically-on-android/#.VEoIoIuUcaV 往下分析 ...
随机推荐
- OC学习笔记之属性详解和易错点
属性的概念在OC1.0中就存在,格式是定义实例变量,然后定义setter和getter方法,用点操作符操作属性 举例,类的接口部分 @interface Father : NSObject { NSI ...
- 团队开发——Alpha版总结会议
本组目前存在的问题: 1.在选题的时候,题目选的比较有难度,造成后期工作量较大,实现有难度(未能正确估计项目的难度). 2.最初规划时,设计的功能较多,但是技术水平达不到,导致目前完成功能较少. 3. ...
- “我爱淘”冲刺阶段Scrum站立会议8
完成任务: 今天最大的成功就是解决了昨天的问题,可以将xml文件的内容解析出来显示到软件中. 计划任务: 可以通过webservice将数据库中的内容解析出来,通过查询可以得到想要的内容. 遇到问题: ...
- 团队项目--“我爱淘”校园二手书店 NABC分析
本项目的特点之一:可查询功能 NABC分析: N(Need):方便校园里的学生查找自己需要的二手书籍,免了同学想买二手书还得跑到阿姨那里去看. A(Approach):将学生的信息和书籍的信息都存放在 ...
- android实现左右滑动菜单
直接看效果图: 主要实现代码: package com.way.view; import android.content.Context; import android.media.Den ...
- 【反射】——Autofac 类型注册
Autofac是.net界一款轻量化的IOC组件,使用Autofac可以帮助完成代码中很多依赖注入工作.在以前文章中,介绍过Autofac的配置过程(http://www.cnblogs.com/Jn ...
- Python 读写excel数据
读取excel 文件的数据 import csv with open('D:/mystuff/11.csv','r') as f: reader = csv.reader(f) for row in ...
- SQL Server 动态管理视图(DMVs)
DMV在本地部署的SQL Server中需要VIEW SERVER STATE的权限 和事务有关的DMV sys.dm_tran_active_transactions:返回与您的当前逻辑数据库的 ...
- Android入门视频推荐
marschen老师的Android入门视频推荐网址: 1.Android应用程序开发视频教程(重制版)第一季 2.Android应用开发视频教程(重制版)第二季 2.marschen老师的个人微 ...
- 01.Redis安装
1.安装Redis 1.下载.解压Redis [lizhiwei@localhost Redis]$ ll total 1248 -rwxrwxr-x. 1 lizhiwei lizhiwei 127 ...