【问题标题】:Why "int/boolean/..." are primary types which have no "behavior" where type is "behavior specification"为什么“int/boolean/...”是没有“行为”的主要类型,其中类型是“行为规范”
【发布时间】:2014-06-26 13:03:28
【问题描述】:

来自本文:http://www-public.int-evry.fr/~gibson/Teaching/CSC7322/ReadingMaterial/Wegner87.pdf

它定义了type:

type:类型是一种行为规范,可用于生成具有该行为的实例。

但是我在这个文档中找到了:http://www.ccs.neu.edu/home/riccardo/courses/csu370-fa07/lect4.pdf

它说 Java 有:

  1. 原始类型:原始值对应的类型,包括int、short、long、 byte、char、float、double 和 boolean。
  2. null 类型:null 值的类型

但是“原始类型”是没有行为的值,null 也是值。

为什么它们是“类型”?它们是否引用相同的概念“类型”?


关于“行为”,在我目前的理解中,它是一个变量或实体提供给我们调用的东西(似乎我在谈论对象)。但是由于类型不仅适用于“对象”相关语言,所以我现在真的不确定“行为”是什么。

也许真正的问题应该是:“类型”定义中的“行为”是什么意思?

【问题讨论】:

  • 那么,你认为有什么行为?
  • "Do they reference the same concept "type"?" 如果没有完全阅读这些论文,我会拒绝。第一个是指 OOP 范式中类型的概念。第二个讨论更多的技术术语:Java 中变量的类型。
  • 行为?我会说算术如何处理原语 is 行为,null 导致 NullPointerExceptions 是行为等。
  • @Rhymoid,更新了问题,增加了对“行为”的理解。
  • int i = 1 + 1x 现在是 2。现在让我们试试boolean b = true || false。好的,b 现在是 true。但是如果我们这样做1 + true。答案是什么。显然,原语确实有行为,因为我们可以根据该行为做前两个示例,但第三个失败了,因为它不符合预期的行为。

标签: java types


【解决方案1】:

原始类型和 Null 类型是“类型”,因为 JLS 指定它们。 JLS没有提供“类型”的正式定义,除了ReferenceTypePrimitiveType和空类型[JLS 4.1]三种类型。

链接的第二篇论文很可能重用了 JLS 中定义的术语。

【讨论】:

    猜你喜欢
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2014-10-03
    • 2018-07-31
    相关资源
    最近更新 更多