【重走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 往下分析 ...
随机推荐
- 通过HTML5实现发送声音
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Careercup - Google面试题 - 4877486110277632
2014-05-08 05:16 题目链接 原题: Given a circle with N defined points and a point M outside the circle, fin ...
- 【Longest Common Prefix】cpp
题目: Write a function to find the longest common prefix string amongst an array of strings. 代码: class ...
- Readhat Linux5.5 安装SVNService(经验总结)
Subversion独立服务和与apache整合服务. 一 .Svn独立服务安装 操作系统: Redhat Linux5.5 安装包获取: 下载 http://subversion.tigris.or ...
- 使用sqlserver日期函数获取当前日期
使用sqlserver日期函数中的getdate()可以获取当现的日期,下面就将为您介绍这种使用sqlserver日期函数获取当前日期的方法,供您参考,希望对您学习sqlserver日期函数有所启迪. ...
- Google Guava学习笔记——基础工具类Preconditions类的使用
Preconditions类是一组静态方法用来验证我们代码的状态.Preconditons类很重要,它能保证我们的代码按照我们期望的执行,如果不是我们期望的,我们会立即得到反馈是哪里出来问题,现在我们 ...
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) D Bear and Two Paths
题目链接: http://codeforces.com/contest/673/problem/D 题意: 给四个不同点a,b,c,d,求是否能构造出两条哈密顿通路,一条a到b,一条c到d. 题解: ...
- 跨平台base64数据传输注意问题
今天用base64编码传输json串,android端那边始终看不到图片! 首先发现android端接收的json串长度不一致,仔细研究发现android端接收到的json数据里把服务器数据里的&qu ...
- C#指针与字节数组的操作
private static byte[] ReadBytesFromPtr(IntPtr intPtr, int bufferLength) { var result = new byte[buff ...
- MongoDB 基础
1. 安装 mongodb-win32-x86_64-2008plus-2.6.12-signed.msi,下载地址 https://www.mongodb.com/download-center#c ...