1. 基础知识

    Java的存储空间:寄存器、栈、堆、静态存储区、常量存储区(常量池)、其他存储位置。

    此处重点介绍堆和常量存储区:
    堆:存储new的对象;
    常量池:用来存储final static、String的常量。

  2. Object.equals与String.equals的区别

    Object.equals(==):比较内存地址;
    String.equals: 比较内容即可,不管内存地址。

    总结:
    Object.equals相等,String.equals一定相等;
    String.equals相等,Object.equals不一定相等。

  3. 实战演练

    public class TestString {public static void main(String[] args){// 维护在常量池里面String a="hello";String b="hello";// new出来的所有对象都在堆内存中// 只要是new出现来的都是新对象String c=new String("hello");String d=new String("hello");// 对比内存地址//trueSystem.out.println(a==b);//falseSystem.out.println(a==c);//falseSystem.out.println(c==d);//对比内容//trueSystem.out.println(a.equals(b));//trueSystem.out.println(a.equals(c));//trueSystem.out.println(c.equals(d));}
    }

    解释:
    a,b都是常量,a和b都是指向常量存储区中的常量'hello',所以无论内容还是内存地址都是一样的,因此a==b以及a.equals(b)都是true;
    c,d都是变量,他们都是new出来的对象,里面存在两个hello变量,c和d分别指向自己的hello变量,所以c和d内容一样,但是内存地址不一样,因此c==d是true,但是c.equals(d)为true。

from: https://github.com/wing324/helloworld_zh/blob/master/Java/Java%E4%B8%ADObject.euqals%E4%B8%8EString.equals%E7%9A%84%E5%8C%BA%E5%88%AB.md?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

Java中Object.equals与String.equals的区别相关推荐

  1. java 子类tostring,JAVA中Object类的toString()方法,objecttostring

    JAVA中Object类的toString()方法,objecttostring toString public String toString() 返回该对象的字符串表示.通常,toString 方 ...

  2. Java中collection.toArray(new String[0])、resultSet.toArray(new Integer[0])、Set.toArray()new 数组的性能比较

    一.在调用Set的toArray()方法的时候 在使用HashMap的时候,它的keySet()方法将返回一个Set集合 且Set是继承自Collection的,在使用toArray()的时候其实转换 ...

  3. Java中 byte[]数组序列化和fastjson序列化区别

    Java中 byte[]数组序列化和fastjson序列化区别 Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比. 首先看下实现方式: 1 byte数组序列 ...

  4. 转 Java中final、finally、finalize的区别与用法

    Java中final.finally.finalize的区别与用法 1.简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构 ...

  5. Java中的SoftReference和WeakReference有什么区别?

    本文翻译自:What's the difference between SoftReference and WeakReference in Java? java.lang.ref.WeakRefer ...

  6. Java中的Type接口和Class类区别和联系

    Java中的Type接口和Class类有什么区别 Type是Class的父接口. Type 是 Java 编程语言中所有类型的公共高级接口.它们包括原始类型.参数化类型.数组类型.类型变量和基本类型. ...

  7. Java中print、printf、println的区别 详解

    Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...

  8. JAVA中的方法和构造方法有什么区别

    JAVA中的方法和构造方法有什么区别 1.方法有返回类型,方法名小写,不能和类名相同:构造方法没有返回类型,void也不行,名与类名相同. 2.构造方法是初始化对象的重要途径,所以就算你给一个类没有定 ...

  9. java printf与println_浅析Java中print、printf、println的区别

    我们的程序员在开发的时候,都会使用到很多不同的功能,但是有些功能是大同小异,别着急,下文是爱站技术频道小编为大家带来的浅析Java中print.printf.println的区别,希望对你学习有帮助! ...

最新文章

  1. 怎样看python源代码-如何直接从IDE读取Python源代码
  2. ubuntu新建python代码文件_[Vim]新建python文件自动添加python header
  3. MCMC笔记:蒙特卡罗方法
  4. 具有只读属性的ComboBox
  5. 网络安全08-虚拟机运行架构(寄居架构+原生架构)、虚拟机产品简单介绍、windows操作系统--屏蔽系统自动更新
  6. 深入理解javascript函数参数
  7. 曙光服务器优势,5大核心优势 探秘曙光Cloudview三大平台
  8. postman安装使用教程(标贝科技)
  9. Wekan 2.23 发布,支持中文的 JavaScript kanban
  10. 微机原理、汇编语言与接口技术(韩晓茹)课后答案
  11. source insight 4.0 使用make命令编译
  12. 字节跳动Go 语言面试会问哪些问题?
  13. 关于华为设备ospf进程中RID重叠的问题
  14. docker问题备忘:rpc error: code = 2 desc = containerd: container not found
  15. matlab读txt文件
  16. omnet++仿真软件会从运行模拟开始
  17. 利用 UMA 使硬件加速器可直接用于 TVM
  18. 【图像隐藏】基于DCT算法实现数字水印嵌入+检测+攻击含Matlab源码
  19. VS2013 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
  20. 关于如何制作一个单机游戏

热门文章

  1. Java NIO类库Selector机制解析--转
  2. hibernate 三种查询方式源码跟踪及总结
  3. 引擎讲解2--主要是MyISAM和InnoDB的区别
  4. 2015年240个数据库引擎排名参考
  5. Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探
  6. Spring Boot2.x-07Spring Boot2.1.2整合Mybatis
  7. python 文本分析库_Python有趣|中文文本情感分析
  8. java变量设置_java的安装与环境变量设置
  9. 解决mysql java.sql.SQLException: The server time zone value‘XXXXXX' is unrecognized or represents...
  10. word 转html utf8 在线_pdf转word在线转换器:办公必备工具安利!