zoukankan      html  css  js  c++  java
  • java的string和==和equals和hashcode简单理解

    String s1= "abc";

    s1是引用变量,在栈里面,如果java的String常量池中没有abc,则开拓一块区域存abc,s1指向常量池中的abc;

    String s2= new String("abc");

    s2是引用变量,在栈里面;

    new String()会在堆中开辟一块空间,新增一个String对象;

    而String对象存的也是指向常量池abc的地址;

    ==

    对于8种基本数据类型,比较值

    对于引用数据类型,比较引用

    equals

    object中比较的是引用地址

    8中基本数据类型重写了equals方法,比较的是值

    一个普通对象默认没有重写equals方法

    重写equals为什么一定要重写hashcode

    因为如果不重写hashcode,会出现equals相等,而hashcode不等的情况,这违反object的一个默认的散列规则

    ——hashcode必须相等,euqals才可以相等,否则在hash集合中会出现问题

  • 相关阅读:
    CSS快速入门
    Kafka (一) 核心概念
    软件工程模型
    函数式编程
    spark计算操作整理
    HBase 文件合并
    HBase 数据存储结构
    目的论浅谈
    PHP8的注解
    JS的移入移除
  • 原文地址:https://www.cnblogs.com/whoknows1/p/9962000.html
Copyright © 2011-2022 走看看