我正在https://www.myexamcloud.com做一些自由练习考试,我在这里得到了一些奇怪的答案。
- 当对象等于equals(Object)方法时,其哈希码也必须相等
醇>
我回答false
,因为有可能不是真的,但这是错误的答案。现在我不确定他们在这里问我的问题:如果这是一个很好的做法,如果根据equals-hashCode合约这是必须的,或者每个代码组合根本没有可能。
- 醇>
以下哪些句子对于Java源文件是正确的?
一个。 package语句必须是第一行
湾注释可以放在包语句之前
这是两个正确的答案(我只检查b
),对我来说它看起来像是一个矛盾。如果package语句必须是第一行,那么在允许之前如何进行注释?
- 醇>
以下哪项陈述为真?
一个。在各种转换中都不允许隐式转换
这是什么意思,什么转变?对我而言,转型是一个基本上可以代表任何事物(铸造,克隆,制图等)的词,但事实并非如此 Java中的一个特殊词。
- 醇>
以下哪项陈述为真?
一个。有效的覆盖具有相同的参数类型和顺序,相同的返回类型,并且不比原始方法
更易于访问湾有效的覆盖具有相同的参数类型和顺序。返回类型可以不同
我检查了b
,但a
是正确的。如果有可能覆盖协变返回类型,b
如何不正确?
我知道这个网站不是官方的,这就是我问这个问题的原因。官方考试中我可以期待这样的问题吗?我注意到那些考试试图愚弄并诱骗我很多,但在这里我觉得我觉得不对,就像问题没有足够的信息/背景来回答它。
答案 0 :(得分:3)
1-很可能这个问题已经提到了最佳实践实施equals
/ hashCode
的预期合同。尽管如此,编译器并没有禁止它们返回不同的结果 - 但是我还没有看到这种行为的有效用例,因此,只要我看到它就会质疑它。据推测,考试试图强制执行这个最佳实践预期合同
2-这里他们最有可能的意思是package语句必须是第一个处理行(因为编译器忽略了注释) - 即,你不能在之前放置import语句例如,package语句。所以这里没有矛盾,只是一个不明确的措辞。是的,你可以期待考试中同样缺乏清晰度,所以请留意。
3-如果没有上下文,很难弄清楚他们的意思。也许还包括其他答案选择?转换确实可以引用Java中的各种动作
4-这里的问题不是所提出的选择是否是唯一有效的选择。答案a
表示比可能的有效覆盖更窄的集合(是的,返回类型可以是不同的,只要它是共变体);但是,这个措辞也明确地切断了任何无效的覆盖实现,而b
则没有(注意缺少not less accessible
子句)。所以a
总是正确的,即使它没有涵盖所有有效案件;另一方面,b
涵盖有效和无效的案例,因此可能有时可能不正确。再一次,在实际考试中一定要考虑这些问题,你必须非常认真地阅读
答案 1 :(得分:3)
- 当对象等于equals(Object)方法时,其哈希码也必须相等
醇>
答案是对的。当尝试实现hashcode()
方法时,这是对象的一般契约。取自api doc:
If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
尝试想象当HashMap
处理碰撞时,当equal方法返回true但是hashcode为两个对象返回不同的值。
- 以下哪些句子对于Java源文件是正确的?
醇>
- 一个。 package语句必须是第一行
- 湾评论可以放在包陈述之前
两者都是正确的,因为注释部分不是编译单元的一部分。取自JLS
CompilationUnit:
OrdinaryCompilationUnit ModularCompilationUnit
OrdinaryCompilationUnit:
[PackageDeclaration] {ImportDeclaration} {TypeDeclaration}
ModularCompilationUnit:
{ImportDeclaration} ModuleDeclaration
- 以下哪项陈述是正确的? 一个。在各种转换中都不允许隐式转换
醇>
这有点模糊。但是,我认为这是真的。因为,如果允许,那么这个表达式也应该运行(它不应该运行)
long a = 123L;
int b = a;
- 以下哪项陈述是正确的? 一个。有效的覆盖具有相同的参数类型和顺序,相同的返回类型,并且不会比原始方法更难访问 湾有效的覆盖具有相同的参数类型和顺序。返回类型可以不同
醇>
虽然b做出了有效的选择。选项a比其他选项更具体。因此,b也可能意味着,被覆盖的方法可能比原始方法更容易获得。
通过我参加考试的经验。问题应该非常明确(意味着不应该涉及技巧问题)。所以,我想你可以尝试从他们那里参加模拟考试。但是,尝试也使用其他模拟考试。另外,请阅读其他一些书。
祝你好运。