问题标签 [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 投票
4 回答
1387 浏览

java - 当布尔值不是开关支持的数据类型时,为什么布尔表达式在 case 块中有效?

昨晚阅读了一些 SCJP 认证后,我开始思考 switch 语句以及表达式是如何计算的,我对一些事情感到有些困惑。

Java 不会让你打开一个布尔值,所以下面的代码不会编译:

但是,如果您尝试在 case 块中使用计算结果为布尔值的表达式,编译器不会抱怨,例如:

最终,我永远无法进入这个案例('c' | 'd'),因为它可能会评估为布尔值......

所以我的问题是:

  1. 为什么使用类似的东西是合法的('c' | 'd')
  2. 那怎么可能有用,因为那将无法到达
  3. 如果您想要对多个值进行大小写,但不使用默认值,那么您唯一的选择是重新实现为 if-else 语句吗?
0 投票
6 回答
2501 浏览

java - Slight confusion regarding overriding where variables are concerned

I'm preparing for the SCJP (recently rebranded as OCPJP by Oracle) and one particular question that I got wrong on a mock exam has confused me, the answer description doesn't explain things clear enough.

This is the question :

The answer is 5, but I chose 6.

I understand that overriding applies to methods at runtime, and not variables, but the way my mind interpreted that println was :

  1. call getObject on c1
  2. c1 is actually a SubCovariantTest object, and has a valid override for getObject(), so use the overridden method
  3. The override returns B, so grab x from B which is 6

Is it a case of the JVM ignoring the getObject() part, and always taking x from c1 as variables are associated at compile time?

0 投票
1 回答
1983 浏览

scjp - 树集子集

嗨,我无法理解为什么这段代码的输出是 'ex [6, 7, b, d] [6, 7, b]'。请有人建议子集如何处理数字和字母?谢谢

0 投票
6 回答
5393 浏览

java - 如何以编程方式测试断言是否启用?

OCP Java SE 6 程序员实践考试的正确答案之一是:

您可以以编程方式测试是否已启用断言,而无需抛出AssertionError.

我怎样才能做到这一点?

0 投票
3 回答
26216 浏览

java - 我们怎么不能用'<'比较两个枚举值?

如果枚举实现了 Comparable 那么为什么不能与 < 或 > 进行比较?

0 投票
1 回答
1998 浏览

java - 为什么我不能使用 toString().length() 作为 hashCode() 返回?

我错过了什么?由于默认的 toString() 方法,是否会经常调用 hashCode() 方法?

0 投票
3 回答
20277 浏览

java - 为什么我不能添加两个字节并获得一个 int,而我可以添加两个最终字节获得一个字节?

如果涉及任何 int 大小或更小的表达式的结果始终是 int,即使两个字节的总和适合一个字节。

当我们添加两个适合一个字节的最终字节时,为什么会发生这种情况? 没有编译器错误。

0 投票
2 回答
197 浏览

java - 在接口中声明的匿名内部类:什么是外部类?

考虑以下:

InnerClass 不是静态的,必须针对其外部类的实例创建。

new OuterClass().new InnerClass()

常规的内部类包含对创建它的外部类的引用,可以使用Outer.this.myAttribute(在存在“命名冲突”的情况下特别有用


创建匿名内部类时也是一样:创建的匿名内部类持有对外部类的引用,这就是为什么在方法内部声明谓词(匿名方法局部内部类)时,我们仍然可以在内部类内部访问外部类的变量,而不必将它们声明为 final(而我们应该将变量作为方法参数传递。


最后,我们可以在接口中声明常量,这些常量被隐式标记为 public static final。一个对象可以是一个常数。因此,作为匿名内部类创建的对象是接口的合法常量。

例如,在使用 Guava 时,我通常在我的接口函数和谓词中声明,这允许我利用有用的 Guava 函数,例如Maps.uniqueIndex(...).


所以你可能会问自己我的问题是什么?这里是:

当将匿名类声明为接口常量时(请参阅我的上一个代码示例),匿名内部类对哪个外部类持有引用?

0 投票
2 回答
2856 浏览

java - ocpjp 示例问题中的比较器问题

我目前正在准备 Java SE 7 程序员考试,并尝试解决 Oracle 站点上的示例问题。我被困在这个:

结果是什么?

一)2 3 5 7

B) 2 7 5 3

三)7 5 3 2

D) 编译失败。

E) 运行时抛出异常。

问题可以在这里找到:http ://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=303&p_certName=SQ1Z0_804

网站上显示的正确答案是 C。我测试了代码,发现它没有编译,因为 Comparator 是参数化的,并且在给定的代码中没有指明类型,因此编译器期望 Object 参数用于 compare 方法。当我将 Comparator 更改为 时Comparator<Integer>,错误已解决,并且按预期工作。

我的问题是原始代码中的声明是否尊重 Java 7 的标准并且应该编译。

0 投票
3 回答
1860 浏览

java - Java中垃圾收集的合格变量

我正在准备OCPJP,但遇到了以下模拟考试问题:

鉴于:

当到达第 14 行时,有多少对象符合垃圾收集器的条件?

A. 0

B. 1

C. 2

D. 3

E. 4

F. 6

他们的正确答案是 E,即四个物体,但我不知道为什么。从我的角度来看,i2 及其权重将有资格进行垃圾收集。也许我错过了一些东西,请指教。