当前位置: 首页 > 面试题库 >

原始值可以视为Java中的对象吗?

公孙宏远
2023-03-14
问题内容

当我开始使用Java时,向我暗示我们有两种不同的类型:

Objects (strings, from classes, println, etc)
primitive values (int, double, char)

我刚从教授那里拿回一份考试,这种差异意味着两个选择作为答案之间的差异。当我请教授澄清时,他告诉我原始值可以是对象。

谁在这里,谁能给我任何证据?证明将是官方的声音,我会选择答案作为答案,同时还会奖励一些众所周知的互联网。


问题答案:

原始值可以视为对象吗?

答案是不。

该JLS状态

Java编程语言中有 两种类型 :基本类型(第4.2节)和引用类型(第4.3节)。相应地,可以将 两种数据值
存储在变量中,作为参数传递,由方法返回并对其进行操作:原始值(第4.2节)和引用值(第4.3节)。

这些都是
基本类型和值它们是

由Java编程语言预定义并由其reserved关键字命名

和引用类型和值,可以是以下一种

类类型(§8),接口类型(§9),类型变量(§4.4)和数组类型(§10)。

另请注意,有一个特殊类型为the null type和其对应的值the null reference

还有一个特殊的null类型,即表达式null(§3.10.7,§15.8.1)的类型,没有名称。

空引用是空类型表达式的唯一可能的值。

对于原始类型,JLS定义了一种称为装箱转换的机制,用于将它们转换为相应的引用类型。

装箱转换将原始类型的表达式转换为引用类型的对应表达式。

因此,由于需要从原始类型转换为相应的引用类型的 转换 ,所以不能说原始可以被视为对象,反之亦然。但是可以说他们是可兑换的。



 类似资料:
  • 当对象相加 obj1 + obj2,相减 obj1 - obj2,或者使用 alert(obj) 打印时会发生什么? 在这种情况下,对象会被自动转换为原始值,然后执行操作。 在 类型转换 一章中,我们已经看到了数值,字符串和布尔转换的规则。但是我们没有讲对象的转换规则。现在我们已经掌握了方法(method)和 symbol 的相关知识,可以开始学习对象原始值转换了。 所有的对象在布尔上下文(con

  • 问题内容: 我有以下代码,试图将StringBuffer对象作为键放入TreeSet中。我这样做的原因是看是否可以将可变对象用作键。我没有任何编译错误。但是当我运行此代码时,我得到了代码下方的错误。特别是,我得到这个。此错误表示什么? 从javadoc中我看到StringBuffer类被声明为final(),这并不意味着它是不可变的,因此是可哈希的吗? 我是哈希和不变的东西的新手,请在这里帮助我。

  • 问题内容: 我正在阅读Head First Java的书中的一句话: 关键是哈希码可以相同,而不必保证对象相等,因为该方法中使用的“哈希算法” 可能会为多个对象返回相同的值。 为什么该方法可能为不同的对象返回相同的值?这不会引起问题吗? 问题答案: *对对象进行 *散列 意味着“ 找到可以由相同实例一次又一次地再现的良好的描述性值(数字) ”。由于Java的哈希码类型为,因此只能具有不同的值。这就

  • 问题内容: 我将类的实例存储在中。 如何将Object 转换回类以访问class方法? 问题答案: 打字: 另外,如果是 class方法 ,则不需要 实例 来访问它,则可以直接调用它:

  • 问题内容: 我一直在尝试创建自己的库,以使用反射来检查方法命名模式和方法返回类型,以从类到xml以及从xml到类实例的原始类型进行序列化和反序列化。 到目前为止,我已经能够使用所有基本的基本类型进行此操作,但是我被困在序列化相同基本类型的数组上。 例如,我调用class方法来获取原语数组: 该方法将仅返回一个原始数组等。尽管我们不知道它将是哪一个。 我试过使用通用的 但这不能让我从原始数组转换为对

  • 问题内容: 我了解以下错误的原因: 它不会编译。表达式始终导致。因此,我们应该进行显式转换: 但是 我不明白为什么以下是正确的 : 因为文字整数(例如3或8)始终隐式为。而且表情总是导致过。谁能解释这是怎么回事? 我唯一能猜到的是编译器将此表达式等同于以下内容: 并且不认为这是一个表达式。 问题答案: 这有 少† ,无论是否做评估,以在编译时间, 更 要与事实的编译器是明确允许隐式窄s到在某些情况