`
luxury_zh
  • 浏览: 72927 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

String,Long,Integer等类型调用equals方法比较

阅读更多
    类似于"abcd".equals(someString)想必大家都很熟悉了,但是如果是在某个Long或者Integer类型对象上调用equals方法与someString做比较的话,结果会是怎样呢?
     不看源码之前,先猜想:
     可能1、对Long(Integer)对象调用toStirng方法后再比较。
     可能2、用类似Intger.parseInt(someString)来比较,可能性不大,毕竟不是所有类型的对象都有类似这样的方法,但是toString()是每个类都有的。
     那么,翻看源码吧,首先看java.lang.Integer
   
    public boolean equals(Object obj) {
	if (obj instanceof Integer) {
	    return value == ((Integer)obj).intValue();
	}
	return false;
    }

    原来,比较之前,首先会判断待比较对象的类型是否是Integer类型(或者其派生类型,但由于Integer已经声明为final class,故没有派生类),如不是,则直接返回false,否则比较两者的数值。类似的,Long也是这样的实现方式。
    所以,在Long(Integer)上调用equals方法与Stirng类型比较时,需要先调用其toString()方法,然后再比较。这也算是昨天开发过程中碰到的个小插曲吧,在这里记录一下,与大家分享。
分享到:
评论

相关推荐

    细数java中Long与Integer比较容易犯的错误总结.docx

    ### Java中Long与Integer比较易犯错误总结 #### 一、引言 在Java编程过程中,经常需要对数值进行比较操作。对于基本数据类型如`int`和`long`,可以直接使用`==`进行比较。然而,当涉及到它们的包装类`Integer`和`...

    2023最新Android 面试篇(2303版).pdf

    默认情况下(没有覆盖equals方法)下的equals方法都是调用Object类的equals方法,而Object的equals方法主要是用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。 2. int、char、long各占多少字节数...

    Java equals()方法使用详解及总结

    其他的封装类,如 Integer、Float 等,也都是重写了 equals() 方法来比较它们的实际内容。 在 Java 规范中,对于 equals() 方法的使用有几个重要的规则需要遵守: 1. 自反性:对于任何非空引用值 x,x.equals(x) ...

    java练习题库

    - 解释: `str1`和`str2`虽然是两个不同的`String`对象,但由于它们的内容相同,所以通过`equals`方法比较时返回`true`。而`==`运算符比较的是对象的引用是否相同,这里两者是不同的对象实例,所以返回`false`。 **...

    java原始数据类型的包装类

    - 包装类提供了与原始类型相比较的方法,如`equals()`、`compareTo()`,可用于对象间的比较。 5. **转换方法**: - `parseInt()`, `parseFloat()`, `parseLong()`等静态方法可以将字符串转换为对应的数值类型。 ...

    java基础知识测试题.docx

    答:switch 语句可以作用在 byte, short, char, int 等整数类型上,但不能作用在 long 或 String 上。 2. 什么是自动类型转换? 答:自动类型转换是指 Java 编译器在编译时自动将一种数据类型转换为另一种数据类型...

    2020年中软国际-Java中级.pdf

    == 运算符比较的是对象的内存地址,而 equals() 方法比较的是对象的内容。 在 Java 中,每个对象都有一个 hashCode() 方法,该方法返回对象的哈希码。在散列集合中,hashCode() 方法用于定位对象的存储位置。equals...

    Java常用API知识测试带答案.doc

    Java中的包装类是指将基本数据类型封装成对象的类,如Byte、Short、Integer、Long等。每个基本数据类型都有对应的包装类。 7. null和空字符串 null表示没有对象的引用,而空字符串是长度为0的字符串对象。null可以...

    大厂真题之菜鸟网络-Java初级.pdf

    == 运算符用于比较基本数据类型的值和引用类型的内存地址,而 equals 方法用于比较对象的内容是否相等。hashCode 方法用于计算对象的哈希码,在对象进行散列时作为 key 存入。equals 方法和 hashCode 方法的关系是:...

    十大常见Java String问题_动力节点Java学院整理

    当需要将字符串转换为整数或长整数时,可以使用Integer.parseInt()和Long.parseLong()方法。对于可能非常大的数值,应使用Long,以避免溢出。 5. **通过空白字符拆分字符串** String类的split()方法使用正则...

    【Java基础笔记】包装类.docx

    例如,当我们把一个Integer对象赋值给int变量时,编译器会自动调用Integer对象的`intValue()`方法完成拆箱;反之,将int值赋给Integer对象时,会自动调用`valueOf(int)`方法完成装箱。 总结,Java的包装类是面向...

    Java 22道基础面试题.docx

    4. switch 语句:switch 语句可以作用于 byte、short、int、char、String、enum 等类型。 5. 内部类:内部类是写在一个类里面的类,它有很好的封装性,可以访问私有变量。 6. 多态:多态是指在运行时才能确定类型...

    JAVA中实现“相等”比较的深入分析.pdf

    此外,Java的equals()方法在不同类中有不同的实现,比如String类就重写了equals()方法,使得字符串比较不再是简单的引用比较,而是基于字符串的内容来比较。这种行为上的差异,正是Java语言灵活性和强大功能的体现。...

    java教程第8章常用的系统类及内部类.ppt

    例如,long 类型对应的包装类是 Long,int 类型对应的包装类是 Integer 等。 5. Date 类、Calendar 类、SimpleDateFormat 类 Java SE 中的 Calendar(日历)、Date(日期)和SimpleDateFormat(日期格式)组成了 Java ...

    2023年JAVA面试题资料.doc

    这是因为 equals() 方法比较两个对象时,编译器会自动调用 hashCode() 方法来比较两个对象是否生成相同的整数结果。 String, StringBuilder, StringBuffer 的区别 String 保存字符串常量,每次变化都会产生一个新...

    java面试宝典2010版

    10. **"=="和equals的区别**:"=="比较的是两个对象的引用是否相同,而equals方法比较的是对象的内容是否相等。对于非原始类型,重写equals方法是常见的做法。 11. **静态变量和实例变量**:静态变量属于类,所有类...

    java面向对象考试题.pdf

    B选项中,`equals()`方法比较字符串内容,所以`new String("abc")`与`"abc"`内容相同,`equals()`返回`true`。D选项的`list.contains(null)`在空列表中查找`null`,所以返回`false`。 第六题展示了接口和类的使用。...

    包装类和字符串1

    - 常用成员方法:`length()`获取字符串长度,`indexOf()`查找子串首次出现的位置,还有`substring()`截取子串,`equals()`和`equalsIgnoreCase()`比较字符串内容等。 5. **StringBuilder与StringBuffer**: - `...

Global site tag (gtag.js) - Google Analytics