【问题标题】:Is "equivalent" the same as "equal" (or "absolute equal")?“等效”与“相等”(或“绝对相等”)相同吗?
【发布时间】:2016-03-07 22:41:57
【问题描述】:
这两个词一直萦绕在我的脑海中。它们在逻辑上是相同的还是完全不同的?例如,在 Java book: Introduction to Programming by Liang 中,他说:
您可以使用泛型类而无需指定具体类型,例如
这个:
GenericStack stack = new GenericStack(); // raw type
这大致相当于
GenericStack<Object> stack = new GenericStack<Object>();
【问题讨论】:
标签:
java
logic
discrete-mathematics
【解决方案1】:
平等有很多层次。通常它们用“相等”或“等价”之类的词来指定。这些词的含义完全取决于上下文,但通常平等意味着等价,但反之则不然。
例如,给定两段代码A和B,我们可以说A和B如果它们由完全相同的字符组成,则它们是相等的,并且如果我们总是可以将 A 替换为 B,则它们是等价的,反之亦然,而不改变程序。如果我们这样做,
int i;
i = 10;
和
int i = 10;
不相等,但等价。
您引用中的两个代码 sn-ps 被作者称为“大致等效”。 “大致”一词表明它们根本不等价。确实:
GenericStack stack = new GenericStack();
GenericStack<String> stack2 = stack;
编译(带有警告),而
GenericStack<Object> stack = new GenericStack<Object>();
GenericStack<String> stack2 = stack;
没有。
作者所说的“大致等价”的意思是原始类型在许多(但不是全部)情况下确实表现得像GenericStack<Object>。特别是,您可以将任何对象放入其中。