java - 在 Java 中使用引用时的注意事项

标签 java reference

<分区>

在 Java 中使用引用时有哪些注意事项?

最佳答案

Java 新手在理解引用时遇到的常见问题是:

  • 对 Java 的参数传递机制感到困惑。他们认为因为对象是引用,所以它们在方法调用中是“通过引用传递”的。这不是真的。在 Java 中,参数总是“按值传递”。

  • 对什么是 Java 数组感到困惑。数组只是一种特殊的对象。它们是在堆上创建的,具有引用,并且这些引用是“按值传递”的……就像任何其他对象一样。

  • == 对引用的含义感到困惑。它的意思是“是同一个对象”,不是“等于”。 equals 方法用于测试两个对象是否相等……不管是什么意思。

  • 新用户经常出错的一个众所周知的子案例是在处理字符串时,两个字符串对象“相等”而不是“同一对象”是很常见的。简单的规则是不要使用 == 来比较字符串

  • 一个鲜为人知的子案例是原始包装类 Boolean、Character、Integer 等。问题...和解决方案...与字符串基本相同;即不要使用 == 来比较 Boolean、Character、Integer 等实例。

  • 有些人对null 有疑问。基本概念很简单,但有些人养成了在应该抛出异常时返回 null 的坏习惯。这会导致对 null 进行大量不必要的测试,并且当必要的 null 测试被遗漏时,由于意外的 NullPointerExceptions 而导致不稳定。

  • 有些人认为您应该能够为分配在堆栈上的某些对象创建引用。 Java 不允许这样做。在 Java 中,对象总是分配在堆中。堆栈帧仅包含引用和原始值,Java 不提供“获取”任何内容的地址的方法。

  • 有些人认为您应该能够使用引用进行指针运算。 Java 不允许这样做。

但基本上,Java 引用非常简单易懂,而且基本上没有问题……一旦您停止尝试从 C/C++ 指针的角度考虑它们。

关于java - 在 Java 中使用引用时的注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1741003/

相关文章:

java - 使用 SharedPreference 定义可绘制资源

java - 分割id并添加到数组

c# - 在 VS 中向 "Add Reference"对话框添加一个选项卡?

c++ - 调用一个函数而不明确引用它根据输入而改变

c# - 为什么在通过 NuGet 添加时,某些程序集引用有版本而另一些则没有

java - Android map 应用程序未在设备中运行

Java如何填充二维数组

java - createJdbcRowSet源代码

c++ - 关于引用指针的说明

c# - 奇怪的委托(delegate)引用行为