zoukankan      html  css  js  c++  java
  • 字符串比较

    1.==运算符

    对于值类型:==运算符比较的是两个操作数的值是否相等,值相等返回true,否则返回false

    对于引用类型:==运算符比较的是两个引用对象是否指向同一个对象,下面看一个具体的栗子:#include<string>#include<iostreausing namespace stdint m{

    string a="hello";
        string b="hello";
    char c[]="hello"; char d[]="hello"; cout<<"a==b:"<<(a==b)<<endl; cout<<"c==d:"<<(c==d)<<endl; cout<<"a==c:"<<(a==c)<<endl; return 0; }

    上面代码中:只有c==d返回0,其余都返回1

    这是因为指针赋值给相同的常量字符串时候,他们实际会指向同一块内存地址,我的理解是string类的对象就相当于指向string的指针,所以相同的常量字符串在string中内存地址也是相同的,而char数组赋值的时候重新再内存中分配了空间。

    2.equals和hashCode

    在C#和Java中,equals()是Object类提供的方法之一,如果没有重写该方法,它是直接使用==比较两个对象的引用,但是String中覆盖了它并让它比较的是数据内容而不是引用,而==是比较的引用。

    而hashCode也用来鉴定两个对象是否相等,但它返回的是对象在内存中的int值,如果没有重写hashCode方法,任何对象的hashCode方法都是不一样的。

  • 相关阅读:
    vue父子组件通信
    canvas(一)
    js中的this
    git中遇到的问题
    javaScript中各种数据结构的遍历
    git合并多个提交
    vue学习笔记(三)——vuex—store配置
    vue学习笔记(二)——路由配置
    0欧电阻的作用
    STM32L系列单片机内部EEPROM的读写
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4472397.html
Copyright © 2011-2022 走看看