Java中的“解除引用”是否有正式或权威的定义?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中的“解除引用”是否有正式或权威的定义?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1481字,纯文字阅读大概需要3分钟。
内容图文
来自C和C背景,我一直认为Java中的解引用是通过其引用访问对象的过程.
例如,“ref”是一个引用,当用于访问它引用的Integer对象时,它被解除引用:
Integer ref = new Integer(7);
// Dereference "ref" to access the object it refers to.
System.out.println(ref.toString());
当解除引用过程失败时,会发生NullPointerExceptions:
Integer ref = null;
// Dereferencing "ref" causes an exception.
System.out.println(ref.toString());
但是,我的解释与Oracle新Java SE 8 Programmer I exam (beta)上测试的主题之一相冲突:
Explain an Object’s Lifecycle (creation, “dereference by reassignment” and garbage collection)
因此,根据创建Java 8考试的人,在Java中取消引用是重新分配引用的行为,而不是评估引用的行为:
例如:
// Create an Integer object, and a reference to it. Integer ref = new Integer(7); ref = null; // Now (according to Oracle?): // - The reassignment means ref has been "dereferenced". // - The dereferenced object is now eligible for Garbage Collection.
通过谷歌搜索该问题表明,甲骨文的定义被更广泛地使用,但这并不意味着它是正确的,谷歌“通过重新分配取消引用”的唯一打击就是针对新的Java 8考试!无论如何,JLS并没有真正解决问题.
关于解除引用在Java中的真正含义,是否有任何正式或权威的定义(而不是个人意见)? (即它与评估或重新分配有关吗?)
两个完全不同的定义设法共存似乎很奇怪.
解决方法:
虽然没有官方定义,但在某些Java错误语句中使用了“dereference”一词.
例如,如果您编写以下代码:
char ch = 'A';
if (ch.isLetter()) { }
你得到错误:char无法解除引用
因此,可以说,在帮助下使用其引用来访问对象的状态或行为.操作符正在解除引用.
内容总结
以上是互联网集市为您收集整理的Java中的“解除引用”是否有正式或权威的定义?全部内容,希望文章能够帮你解决Java中的“解除引用”是否有正式或权威的定义?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。