为什么理解Java中引用类型和原始类型之间的区别很重要?

时间:2009-04-27 10:17:00

标签: java types

我正在阅读Java中的一系列问题,如果不先了解这些问题,就无法正确理解。

例如:

  • 将参数传递给方法
  • 确切地说,在变量声明中使用“final”会产生什么限制。
  • ==表示什么

还有吗?

编辑:这个问题似乎对人们没有意义。它背后的动机是我作为初学者学习Java的经历是,例如:

之间的区别
int i = 1;

Set<Thing> set = new Set<Thing>();

不明显。现在我知道,一旦你选择了Java,你就会把它视为理所当然,不要考虑它,但我认为这是初学者努力的事情,特别是如果他们不是来自编程背景。我认为在教授Java时经常需要解决这个问题。

编辑:仍然没有好处。随意关闭。

3 个答案:

答案 0 :(得分:2)

我认为最重要的一点是要理解Java中的引用不包含对象本身,而只包含实际对象本身的地址(或指针或任何您想要调用的对象)。因此,了解您总是有两件事是至关重要的:

  1. 参考(存储在变量中)
  2. 对象(不能存储在变量中 - 仅由引用引用)
  3. 如果你理解这个关键概念,那么像==这样的东西很容易理解,因为现在你知道你只是在比较参考而不是对象。

    总结:在教授如何使用对象之前,请解释对象与其引用之间的区别。

答案 1 :(得分:0)

我认为您的问题是 - 如果您要向某人解释Java功能,那么为了更好地解释,您需要将其与其他功能进行比较。

例如,

== Vs .equals()

我认为这样 -

  • static Vs non-static
  • interface Vs class
  • synchronized Vs non-synchronized

这是你要找的吗?

答案 2 :(得分:0)

我同意Benedikt Eger的观点,即引用和对象之间的关系是最重要的理解概念。

对于你的问题列表:“=”运算符有时会引起人们的混淆,因为对于初学者来说,它似乎可以“复制”原语但“共享”对象。这在Java中比在C ++中少得多,因为“=”将永远复制对象(Java不会将对象放在堆栈上)。但是,我看到“=”绊倒了初学者,特别是当他们认为“=”会创建一个数组的副本时。