zoukankan      html  css  js  c++  java
  • ==和equeals区别以及使用场景

    定义

    • ==:基本数据类型比较的是值或地址,引用数据类型比较的是地址。
    • equals:在不重写的情况下,和==没有任何区别,重写,可以自定义比较规则,一般重写之后都让其比较值。
      Object类中的equals方法
      image
      String引用数据类型中重写的equals方法
      image

    使用

    基本数据类型:
    (byte,short,char,int,float,double,long,boolean),不是常量时存放于栈内存,是常量时存放于方法区的常量池中,不管怎样都可用==进行值得比较。

    特殊的引用数据类型String
    String str="";这样由""创建,存放于常量池中;若new String("")创建则存放于堆内存中,所以存放于常量池中则可以用双等号进行比较,若存放于堆内存中,要比较值相等则必须用equals进行比较

    其他的引用数据类型
    要比较值时,必须重写equals方法。

    注意:常量池里面的数据是以HashSet策略存储起来的(不可重复),当执行String s1 = “hello”;这条语句时,会在堆中的字符常量池里找”hello”这个字符串,若没有找到,则将”hello”这个字符串放入字符串常量池中,而在栈中开辟一块名为s1的空间存放”hello”,这块空间的引用。当执行String s2 = “hello”;这条语句时,会在堆中的字符串常量池里找”hello”这个字符串,很显然,可以找到,于是便把字符常量池里”hello”这个字符串的引用地址赋给s2,因此s1与s2存放的都是堆中字符常量池中的同一个”hello”的引用。

    XFS
  • 相关阅读:
    在.net中过滤敏感字符
    const和readonly的联系和区别
    新闻内容页分页的简单做法
    jmail邮件发送问题
    nvarchar与varchar的区别
    C#中"is" vs "as"
    在C#中,string 类型可与SQL SERVER中的int 类型作比较
    做网站常用代码集锦 (转)
    做网站常用代码集锦 (转)
    ADO 数据类型转换表 oledbtype sqldbtype (二)
  • 原文地址:https://www.cnblogs.com/xiaofengshan/p/14698670.html
Copyright © 2011-2022 走看看