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

 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

 

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

时间: 2024-11-03 01:39:58

Java中的equals和==异同,你知道多少?的相关文章

看Java中==、equals、hashCode的来龙去脉

我有一个哥们去参加了面试,面试官这样问一个Java问题: 你说一下java对象的equals方法调用什么方法呢?我这个哥们想了想,回答说"应该是比较的引用".听了这个答案之后,那个面试官摇头晃脑的说:"不对,你回答的不对,equals方法调用的是hashCode方法".于是乎,我那个技术还不错的哥们就悲壮地栽在这道题目上了. 今天晚上,西安历史上少有的热,那就好好总结一下这个题目的来龙去脉好了,也方便给后面的朋友们提个醒,不要栽在这么简单的问题上.你说这个面试官回答

【转】浅谈Java中的equals和==

浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 4 System.out.println(str1==str2); 5 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一样?==和equals方法之间的区别是什么?如果在初

Java 中的 ==, equals 与 hashCode 的区别与联系

一.概述 1.概念 == : 该操作符生成的是一个boolean结果,它计算的是操作数的值之间的关系 equals : Object 的 实例方法,比较两个对象的content是否相同 hashCode : Object 的 native方法 , 获取对象的哈希值,用于确定该对象在哈希表中的索引位置,它实际上是一个int型整数 二.关系操作符 == 1.操作数的值 基本数据类型变量 在Java中有八种基本数据类型: 浮点型:float(4 byte), double(8 byte) 整型:byt

java中Object.equals()简单用法

/* equals()方法默认的比较两个对象的引用! */ class Child { int num; public Child(int x){ num = x; } //人文的抛出运行时异常的好处是:可以自定义错误信息! /*public boolean equals(Object o) throws ClassCastException{ if(!(o instanceof Child)) throw new ClassCastException("中文提示:类型错误"); Ch

【Java学习笔记之二十九】Java中的&quot;equals&quot;和&quot;==&quot;的用法及区别

Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 System.out.println(str1==str2); 4 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一

Java中的equals和hashCode方法

本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这两个方法. equals()和hashCode()方法是用来在同一类中做比较用的,尤其是在容器里如set存放同一类对象时用来判断放入的对象是否重复.这里我们首先要明白一个问题: equals()相等的两个对象,hashcode()一定相等,equals()不相等的两个对象,却并不能证明他们的h

java 中的equals()小结

转载自http://www.cnblogs.com/jackyrong/archive/2006/08/20/481994.html Java中的equals是十分重要的,和= =要区别开来,最近在看孙卫琴的JAVA面向对象编程一书,觉得对其阐述写的不错,所以现在小结其主要内容,而且要将 = =和 equals列为重要的对比概念来学习1.声明格式public boolean equals(Object obj)其比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回

浅谈Java中的equals和==

浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 4 System.out.println(str1==str2); 5 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一样?==和equals方法之间的区别是什么?如果在初

java中‘==’和‘equals()’方法的有趣探索

这两天在看周志明的<深入理解java虚拟机>,受益颇多,根据书中的启示,对java中'=='和'equals()'方法的区别做了一些探索. 首先,为了更快地让进入状态,我们先来所几个判断题,例程如下,请判断各个System.out.println()输出的结果. <pre name="code" class="java"> public static void main(String[] args) { Integer a =1; Integ