问题标签 [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.
java - a = (a++) * (a++) 在 Java 中给出奇怪的结果
我正在为 OCPJP 考试而学习,所以我必须了解 Java 的每一个奇怪的细节。这包括前增量和后增量运算符应用于变量的顺序。以下代码给了我奇怪的结果:
答案不应该是11吗?或者可能是 13 岁?但不是12!
跟进:
以下代码的结果是什么?
java - 对实例变量的初始化感到困惑
我正在为 SCJP 考试做准备,在做一些模拟测试时,我遇到了这个:
它询问以下内容的输出:
我认为它会是21 20
,因为 ti 会调用 getInt,然后将 k 递增到 21。
然而,答案是1 20
。我不明白为什么会是1,有人可以对此有所了解吗?
java - OCPJP 考试的垃圾收集模拟
i3 = null;
当在如下所示的类中执行时,四个对象有资格进行垃圾回收。我添加了评论来解释我是如何得到这个答案的。我的推理正确吗?
java - 对 Java 的按值传递和不变性感到困惑
在准备 SCJP(或现在已知的 OCPJP)考试时,我被一些关于传递(参考)值和不变性的模拟问题所吸引。
我的理解是,当您将变量传递给方法时,您传递的是表示如何获取该变量的位的副本,而不是实际的对象本身。
您发送的副本指向同一个对象,因此您可以修改该对象(如果它是可变的),例如附加到 StringBuilder。但是,如果您对不可变对象执行某些操作,例如递增 Integer,则局部引用变量现在指向一个新对象,而原始引用变量仍然没有注意到这一点。
在这里考虑我的例子:
问题:是否只有不可变对象以这种方式运行,而可变对象可以通过值传递引用进行修改?我的理解是正确的还是这种行为有其他好处?
java - Java 通用方法/参数类型
在以下代码示例中:
为什么编译器genericFromArrayToCollection()
只有在集合的声明类型是数组声明类型的父级时才允许调用该方法(参见标记为 #2、#3 和 #4 的行)。请问这是为什么?
谢谢
编辑
当我取消注释标记为 #4 的行时,出现以下错误
编辑 2
@Tudor 我使用此语句尝试了以下方法
编译器报错说不能应用于 java.util.ArrayList
java - Java 数组 - 为什么输出为 '1' ?
为什么这个例子中的输出是1?
我以为会是2。即,表达式被评估为:
a[0] 不应该是2因为a指向b吗?
提前致谢。
java - Java - 选择正确的集合
可能重复:
选择 Java 集合实现的经验法则?
我正在寻找所有 Java 集合的“摘要”列表,详细说明每个集合的优缺点。我对诸如此类的事情特别感兴趣
- 提供更快的迭代
- 提供更快的搜索
- 提供较慢的迭代
- 提供更快的插入或移除
我通过在 Google 上搜索看到了一些网站,但我只是在寻找最好的表格格式的摘要。
提前致谢。
java - Java - ArrayList 删除重复项
在以下示例中:
ArrayList 减少了一个,但它删除了哪一个?它会删除最后插入的还是最早插入的?
java - Java 泛型 - 为什么此方法调用被视为未经检查的转换
以下代码示例编译但带有编译器警告
当我编译上面我得到以下警告
或者,如果我使用 -Xlint:unchecked 编译它,我会收到以下警告
如果我将 nums 的初始化更改为
然后我没有收到任何警告。
为什么他们的行为不同。ArrayList 是 List 的子类型,而 SubArrayList 是 ArrayList 的子类型,所以我希望实例化是相同的。
谢谢。
编辑
此外,如果我调用该方法并将其传递给一般初始化的引用,它也会产生警告。
我认为只有将通用代码与非通用代码混合时才会出现编译器警告。
java - Java 泛型 - 超类型引用
如果我正确理解了泛型,则声明为参数的方法<? super T>
将接受任何类型T
的引用或T
. 我正在尝试使用以下代码对此进行测试,但编译器不喜欢它。
编译器错误是:
我不明白为什么我不能传入 anim2,因为它是类型<Animal>
,而 Animal 是 Dog 的超级类型。
谢谢