我知道 Java 没有指针,但我听说 Java 程序可以用指针创建,而且只有少数精通 Java 的人才能做到。是真的吗?
原文由 user213038 发布,翻译遵循 CC BY-SA 4.0 许可协议
我知道 Java 没有指针,但我听说 Java 程序可以用指针创建,而且只有少数精通 Java 的人才能做到。是真的吗?
原文由 user213038 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答767 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
Java 中的所有对象都是引用,您可以像使用指针一样使用它们。
取消引用 null:
别名问题:
丢失细胞:
您可以通过首先确保不再需要 second 的旧值或将 second 的值分配给另一个指针来确保安全。
请注意,以其他方式(NULL、new…)给 second 一个值同样是一个潜在的错误,可能会导致丢失它指向的对象。
当您调用 new 并且分配器无法分配请求的单元时,Java 系统将抛出异常(
OutOfMemoryError
)。这是非常罕见的,通常是由失控的递归引起的。请注意,从语言的角度来看,将对象丢弃给垃圾收集器根本不是错误。这只是程序员需要注意的事情。同一个变量可以在不同的时间指向不同的对象,当没有指针引用旧值时,旧值将被回收。但是如果程序的逻辑要求维护至少一个对象的引用,就会导致错误。
新手常犯以下错误。
你可能想说的是:
铸造不当:
C 中的指针:
Java 中的指针:
更新: 正如评论中所建议的,必须注意 C 具有指针算法。但是,我们在 Java 中没有。