【重走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 往下分析 ...
随机推荐
- Team Homework #3 软件工程在北航——IloveSE
任务要求: 采访以前上过北航 (计算机系/软件学院) 软件工程课的同学.现在上研/工作的也可以. 采访问题如下:* 平均每周花在这门课上的时间 (包括上课/作业/上机) * 平均写的代码总行数 ...
- EJB总结
http://blog.sina.com.cn/s/blog_8ce4eca80101azdd.htmlEJB详解 http://blog.csdn.net/han_yankun2009/articl ...
- Node.js 学习(七)Node项目部署工具之forever
平常无论是使用命令行还是终端通过node app.js启动项目时,当命令行或终端关闭时项目也就随之关闭了;forever则可以在cmd或ssh连接断开时,让项目一直运行,而且可以在项目崩溃时自动重启 ...
- asp.net中下载文件的问题
今天解决web的文件下载问题,下载的方法网上很多,不过我的下载有点特殊: 1.下载按钮在gridview中,是模板列的linkButton: 2.使用了ajax控件: 所以,在下载时总是报错,通过查找 ...
- Eclipse问题解决集
1.tomcate 报 PermGen space 错误Exception in thread "main" java.lang.OutOfMemoryError: PermGen ...
- python--str的几个方法
str.format() :对应取值 name="chenshan" age=30 address="宜山路926号新思大厦15楼" print " ...
- 《我是IT小小鸟》读书笔记
转眼间,大学的第二学期悄悄来临了,老师给我们布置了一道原本我以为很无趣的题目----写<我是IT的读书笔记>,但是我读了<我是IT小小鸟>这本书后,令我受益匪浅:五个人,每个人 ...
- 设计模式之策略模式(strategy)
策略模式原理:策略模式和简单工厂模式有点类似,只是简单工厂模式产生的是对象,策略模式产生的是根据对象产生的算法. 代码如下: #include <iostream> #include &l ...
- 【BZOJ】【1011】【HNOI2008】遥远的行星
神奇的思路题QAQ 玛雅看到这题我就醉了,什么玩意……5%的误差?果断膜拜@ydc神犇的题解: 就是因为不清楚如何应用那个答案误差不超过5%啦. 从没见过这么诡异的题一下就懵了,问到了方法之后都还半信 ...
- 异步解压ZIP文件
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...