问题标签 [ocpjp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
15 回答
7416 浏览

java - a = (a++) * (a++) 在 Java 中给出奇怪的结果

我正在为 OCPJP 考试而学习,所以我必须了解 Java 的每一个奇怪的细节。这包括前增量和后增量运算符应用于变量的顺序。以下代码给了我奇怪的结果:

答案不应该是11吗?或者可能是 13 岁?但不是12!

跟进:

以下代码的结果是什么?

0 投票
2 回答
172 浏览

java - 对实例变量的初始化感到困惑

我正在为 SCJP 考试做准备,在做一些模拟测试时,我遇到了这个:

它询问以下内容的输出:

我认为它会是21 20,因为 ti 会调用 getInt,然后将 k 递增到 21。

然而,答案是1 20。我不明白为什么会是1,有人可以对此有所了解吗?

0 投票
2 回答
1907 浏览

java - OCPJP 考试的垃圾收集模拟

i3 = null;当在如下所示的类中执行时,四个对象有资格进行垃圾回收。我添加了评论来解释我是如何得到这个答案的。我的推理正确吗?

0 投票
2 回答
1948 浏览

java - 对 Java 的按值传递和不变性感到困惑

在准备 SCJP(或现在已知的 OCPJP)考试时,我被一些关于传递(参考)值和不变性的模拟问题所吸引。

我的理解是,当您将变量传递给方法时,您传递的是表示如何获取该变量的位的副本,而不是实际的对象本身。

您发送的副本指向同一个对象,因此您可以修改该对象(如果它是可变的),例如附加到 StringBuilder。但是,如果您对不可变对象执行某些操作,例如递增 Integer,则局部引用变量现在指向一个新对象,而原始引用变量仍然没有注意到这一点。

在这里考虑我的例子:

问题:是否只有不可变对象以这种方式运行,而可变对象可以通过值传递引用进行修改?我的理解是正确的还是这种行为有其他好处?

0 投票
3 回答
1342 浏览

java - Java 通用方法/参数类型

在以下代码示例中:

为什么编译器genericFromArrayToCollection()只有在集合的声明类型是数组声明类型的父级时才允许调用该方法(参见标记为 #2、#3 和 #4 的行)。请问这是为什么?

谢谢

编辑

当我取消注释标记为 #4 的行时,出现以下错误

编辑 2

@Tudor 我使用此语句尝试了以下方法

编译器报错说不能应用于 java.util.ArrayList

0 投票
4 回答
1195 浏览

java - Java 数组 - 为什么输出为 '1' ?

为什么这个例子中的输出是1

我以为会是2。即,表达式被评估为:

a[0] 不应该是2因为a指向b吗?

提前致谢。

0 投票
1 回答
2211 浏览

java - Java - 选择正确的集合

可能重复:
选择 Java 集合实现的经验法则?

我正在寻找所有 Java 集合的“摘要”列表,详细说明每个集合的优缺点。我对诸如此类的事情特别感兴趣

  • 提供更快的迭代
  • 提供更快的搜索
  • 提供较慢的迭代
  • 提供更快的插入或移除

我通过在 Google 上搜索看到了一些网站,但我只是在寻找最好的表格格式的摘要。

提前致谢。

0 投票
3 回答
144 浏览

java - Java - ArrayList 删除重复项

在以下示例中:

ArrayList 减少了一个,但它删除了哪一个?它会删除最后插入的还是最早插入的?

0 投票
3 回答
225 浏览

java - Java 泛型 - 为什么此方法调用被视为未经检查的转换

以下代码示例编译但带有编译器警告

当我编译上面我得到以下警告

或者,如果我使用 -Xlint:unchecked 编译它,我会收到以下警告

如果我将 nums 的初始化更改为

然后我没有收到任何警告。

为什么他们的行为不同。ArrayList 是 List 的子类型,而 SubArrayList 是 ArrayList 的子类型,所以我希望实例化是相同的。

谢谢。

编辑

此外,如果我调用该方法并将其传递给一般初始化的引用,它也会产生警告。

我认为只有将通用代码与非通用代码混合时才会出现编译器警告。

0 投票
3 回答
2761 浏览

java - Java 泛型 - 超类型引用

如果我正确理解了泛型,则声明为参数的方法<? super T>将接受任何类型T的引用或T. 我正在尝试使用以下代码对此进行测试,但编译器不喜欢它。

编译器错误是:

我不明白为什么我不能传入 anim2,因为它是类型<Animal>,而 Animal 是 Dog 的超级类型。

谢谢