zoukankan      html  css  js  c++  java
  • 如何进行比较?

    ---

    对象的比较:==

    对于基本类型(整数,浮点数,字符,布尔):比较值

    对于引用类型:比较引用(地址)

    为了方便比较引用指向的内容,java在Object类中提供了equals()方法

    但需要注意的是,该标准方法的实现依然是通过 return this==obj,因此如要比较自定义类的内容,需要程序员自己进行方法覆盖(override)。

    字符串的比较

    在String类中,java已经提供了对equals()的方法覆盖实现字符串内容的比较

    但我们如果需要使用==来进行String间的引用比较,可能会发现一个有趣的问题

    image-20210223184714029

    实际上,为了优化内存使用,java在内存中为String提供了一个称为The string pool的区域,

    当我们使用 String s = "..." 声明并创建String对象时,java会先查询 "..."是否已经存在于the string pool中

    如果存在,则直接将其引用赋给s,否则在pool中创建该字符串并将其引用返回给s

    但是,若程序员显式的通过 new 创建对象,无论如何java都会强制在池外的内存中创建该String对象,并且不会将其加入the string pool,下面这个例子就是很好的证明:

    image-20210223185615420


    最后,有一个不太常用的方法 s1.intern() ,它会在the string pool中查找是否存在 String s1,存在则返回其引用,否则将s1加入池中在返回其引用。

  • 相关阅读:
    mysql 行转列 列转行
    JAVA中使用JSch库实现SSH功能
    sqlmap详解
    Max+Decode的妙用.(紀錄分組).
    apache mina sshd ,纯java的ssh工具包
    Nginx 日志分析及性能排查
    PHP在Apache中两种工作方式的区别(CGI模式、Apache 模块DLL)
    如何将本地做好的网站挂到服务器上
    Drupal
    程序员的十种级别,
  • 原文地址:https://www.cnblogs.com/potofsalt/p/14441843.html
Copyright © 2011-2022 走看看