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
  • 相关阅读:
    09 shell脚本程序练习
    springboot整合vue03-创建springboot工程
    springboot整合vue02-创建前端页面
    springboot整合vue01-创建vue工程
    pe工具04-获取数据目录
    pe工具03-获取节表信息
    pe工具02-解析pe头信息
    pe工具01-获取进程和模块
    以挂起方式创建进程
    进程
  • 原文地址:https://www.cnblogs.com/xiaofengshan/p/14698670.html
Copyright © 2011-2022 走看看