当前位置: 首页 > article >正文

JAVA中对象实体与对象引用有何不同?举例说明

在 Java 中,对象实体(Object instance)和对象引用(Object reference)是两个不同的概念,虽然它们通常被一起讨论,但它们的作用和表现方式是不同的。下面我们来详细说明这两者的区别。

1. 对象实体(Object Instance)

对象实体是指在内存中创建的实际对象,它包含了类定义的所有成员变量和方法。对象实体由 new 关键字创建,并在堆内存中分配空间。每个对象实体都有其独立的内存地址。

2. 对象引用(Object Reference)

对象引用是一个变量,它存储着对象实体在内存中的地址。它并不直接包含对象的内容,而只是指向一个实际的对象实体。引用类型的变量可以用来操作对象,但引用本身只是一个指向对象的“指针”。

  • 一个对象引用可以指向 0 个或 1 个对象(一根绳子可以不系气球,也可以系一个气球);
  • 一个对象可以有 n 个引用指向它(可以用 n 条绳子系住一个气球)。

对象的相等和引用相等的区别?

  • 对象的相等一般比较的是内存中存放的内容是否相等。
  • 引用相等一般比较的是他们指向的内存地址是否相等。

这里举一个例子:

String str1 = "hello";
String str2 = new String("hello");
String str3 = "hello";
// 使用 == 比较字符串的引用相等
System.out.println(str1 == str2);
System.out.println(str1 == str3);
// 使用 equals 方法比较字符串的相等
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));

输出结果:

false
true
true
true

 

从上面的代码输出结果可以看出:

  • str1str2 不相等,而 str1str3 相等。这是因为 == 运算符比较的是字符串的引用是否相等。
  • str1str2str3 三者的内容都相等。这是因为equals 方法比较的是字符串的内容,即使这些字符串的对象引用不同,只要它们的内容相等,就认为它们是相等的。

 


http://www.kler.cn/a/398535.html

相关文章:

  • 【网络安全】XSS注入
  • 【Mysql】Mysql的多表查询---多表联合查询(上)
  • 【操作系统实验课】Makefile与编译
  • [Android]相关属性功能的裁剪
  • 处理namespace问题:Namespace not specified for AGP 8.0.0
  • 从零开始学习 sg200x 多核开发之 TF 存储卡根文件系统扩容
  • Transformer学习笔记(一)
  • 机器学习基础03
  • Android 关于使用videocompressor库压缩没有声音和异常的问题
  • 专题二十_动态规划_简单多状态dp问题_买卖股票系列问题_算法专题详细总结
  • 「Qt Widget中文示例指南」如何创建一个窗口标志?(二)
  • Android Framework层介绍
  • 半导体器件与物理篇3 P-N结
  • Redis的Zset在排行榜中应用
  • 【数据结构】树——顺序存储二叉树
  • 面试题1111
  • 使用Kafka实现大规模数据流处理的最佳实践
  • 用哈希表封装myunordered_map/_set--C++
  • LeetCode100之回文链表(234)--Java
  • 药方新解:Spring Boot中药实验管理系统设计
  • 比较TCP/IP和OSI/RM的区别
  • Maven常用打包方式
  • 对接钉钉审批详情
  • FMEA 在新兴技术领域(如量子计算、人工智能芯片等)的应用挑战与机遇
  • linux内核中如何向slab内存分配器申请内存
  • 操作系统启动实验