zoukankan      html  css  js  c++  java
  • Java中==和equals的区别

    A.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较是否引用同一个对象。

    B.对于String a = “a”; Integer b = 1;这种类型的特有对象创建方式,==的时候值是相同的。//涉及到字符串池

    C.基本类型没有equals方法,equals只比较值(对象中的内容)是否相同(相同返回true)。

    D.一个类如果没有定义equals方法,它将默认继承Object中的equals方法,返回值与==方法相同。

     如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可以认为两个对象的内容是相同的。

    附:
    当new一个对像类时,就会在堆中开辟一块空间,然后,会把这个空间的地指向你new 的这个句柄,这个句柄就会放在栈中,(栈)就像个列表,
    CPU会向栈发送指令进行操作。(栈像一本书的目录,堆像书中的详细章节)栈中存放的是对象的具体物理地址。

    Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

    栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int,short,long,byte,float,double,boolean,char)和对象句柄。

  • 相关阅读:
    mysql 从库执行insert失败导致同步停止
    MySQL 占用cpu 100%
    MySQl 主从配置实战
    tomcat 线程数与 mysql 连接数综合调优
    mysql 数据迁移
    Windows系统上设置 Git Bash 的 Font 及 Locale
    java -jar 使用要点
    ConcurrentHashMap 从Java7 到 Java8的改变
    sql索引组织
    注册、启动、停止windows服务
  • 原文地址:https://www.cnblogs.com/gaoxiangde/p/4198576.html
Copyright © 2011-2022 走看看