码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的equals和==异同,你知道多少?

时间:2015-08-11 21:31:08      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

 1.      背景

  今天在调试程序的时候,在调试一个分页查询的时候,后台的代码在拿到页数的时候抛出异常,刚开始以为是没有拿到数据,于是就手动判断,如果没有拿到值,就赋值,可是奇怪的事情发生了,还是不执行为空的代码,跟踪调试发现了一个秘密:

技术分享

  于是在判断的框中添加不等于NaN,但是结果出人意料还是继续往下执行,添加如下的代码

<span style="font-family:Microsoft YaHei;font-size:14px;"><strong>if (rows=="NaN"|| rows == null || "".equals(rows)) {
 
            pageSize =10;
         }else {
            pageSize =Integer.parseInt(rows);
      }</strong></span>

  从而通过值的跟踪和判断,终于发现了原因:

技术分享

  并且当执行rows=="NaN"和执行rows.equals("NaN"),返回的结果如下:

技术分享

 至此原因总算是找到了,也知道为什么我前面的那种写法会无法执行第一种的判断,因为返回的是false,怎么可能执行里面的东西呢?改成下面的就可以了:

<span style="font-family:Microsoft YaHei;font-size:14px;"><strong>if (rows.equals("NaN") || rows == null || "".equals(rows)) {
 
            pageSize =10;
         }else {
            pageSize =Integer.parseInt(rows);
      }</strong></span>

 2.      那么equals和==存在什么区别呢?

 我们知道当使用==的时候,比较的是两个变量的引用的地址,两个变量即使是值相等,在内存中的执行地址也是不一样,故而不能是相等的结果,那么我们就不能比较了吗?当然是可以的啊,equals不就实现了,equals的好处是不是比较两个变量的引用的地址,而是比较它们在内存中的数值,这样即使地址不一样,只要值一样,我们就是可以进行比较。

 推荐文章:http://new-fighter.iteye.com/blog/1634786


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java中的equals和==异同,你知道多少?

标签:

原文地址:http://blog.csdn.net/u010955843/article/details/47426601

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!