问题标签 [scjp]

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 投票
3 回答
1762 浏览

java - Java - 线程 join() 和执行顺序 SCJP 问题?

我一直在为我的 O/SCJP 考试做一些练习。考虑以下代码:

来源:http ://scjptest.com/mock-test.xhtml

该站点声明输出(他们模拟问题的答案)将是BeginRunEnd,并且在正常运行课程时,这正是输出的内容。

但是,调试时输出为RunBeginEnd.

公平地说,在正常执行下,输出将始终BeginRunEnd或者这会根据其他因素而变化(例如新线程类的重量/启动线程后加入它需要多长时间)?

你会说这是一个公平/准确的考试问题吗?

0 投票
1 回答
917 浏览

java - 我可以请人验证我的 SCJP 考试收藏吗

我一直在为 SCJP 学习,现在是 Oracle Certified Professional Java SE Programmer 考试。

我很难理解所有不同的系列以及何时使用它们。我也喜欢闪存卡。因此,我尝试创建一组基本相同的类,除了它们使用的是哪个集合。我必须确定输出将如何出现以及每个集合的主要“特征”是什么。

不幸的是,我不相信自己。我希望有人确认所有信息都是准确的,或者是否缺少任何信息。然后在一些反馈/更正之后,我认为这对于任何试图理解 Java 集合的人来说都是一个很好的练习。

涵盖的集合有:HashMap、Hashtable、TreeMap、LinkedHashMap、HashSet、TreeSet、LinkedHashSet、ArrayList、Vector、LinkedList、PriorityQueue。

我也把所有的文件都分开了,可以在这里下载:http ://www.allgo.com/personal/MyCollections.zip

提前致谢

0 投票
1 回答
6060 浏览

java - 为什么我们不能将实例变量传递给超类构造函数?

可能重复:
在显式调用构造函数时无法引用实例方法

我一直在尝试这样做很长时间。

控制器类

这是随之而来的错误。我想知道为什么不能将实例变量传递给超类构造函数?我怀疑这是因为构造函数没有可访问的实例。

线程“main”java.lang.Error 中的异常:未解决的编译问题:在显式调用构造函数时无法引用实例字段 t

0 投票
2 回答
347 浏览

java - Java继承问题

在探索 scjp 问题时,我遇到了这种奇怪的行为。

我已经声明了两个类 Item 和 Bolt 如下:

并尝试两次访问 cost 的值

我得到的输出是 20 10。我不明白这是怎么发生的。

0 投票
3 回答
319 浏览

java - 使用 var-args 重载方法 - 结合装箱和加宽

当重载包含不匹配参数的方法时,JVM 将始终使用具有比参数更宽的最小参数的方法。

我已经通过以下两个示例确认了上述内容:

加宽:字节加宽到 int

}

装箱:将 int 装箱为 Integer

上述两个示例都输出正确的“In Int”。当情况涉及 var-args 时,我很困惑,如下例所示

以上产生以下错误:

为什么它不应用与前面示例中相同的规则?即将字节扩大到一个int,因为它是大于字节的最小的?

0 投票
2 回答
2556 浏览

java - 为什么我们在匿名内部类中使用 final 关键字?

我目前正在准备 S(O)CJP 和 Sierra & Bates 的书。

关于内部类(方法本地或匿名),他们说我们无法访问局部变量,因为它们存在于堆栈上,而类存在于堆上并且可以由方法返回,然后尝试访问这些变量那些在堆栈上但由于方法结束后不再存在......

众所周知,我们可以通过使用 final 关键字来绕过这个。这就是他们在书中所说的,但他们并没有真正解释 final 关键字的作用是什么……据我所知,在方法局部变量上使用 final 关键字不会让它在堆上存在。 .. 那么该类如何能够访问仍然存在于堆栈中的最终变量,而没有更多的堆栈?

我想内部类中应该有这个最终局部变量的某种“副本”。既然值不能改变,为什么不复制这个信息......有人可以确认一下或者告诉我我是否遗漏了什么?

0 投票
3 回答
2887 浏览

java - 将创建多少个 String 对象

我有以下 Java 代码:

String问题很简单:调用此方法时将创建多少个对象?

一开始我回答说创建了 5 个 String 对象,但我书中的答案说只创建了 3 个对象并且没有给出解释(这是一个 SCJP 问题)。

从我的角度来看,有 5 个对象:“Fred”、“47”、“Fred47”、“ed4”、“ED4”。

我还在 SCJP 模拟考试中发现了这个问题,答案相同 3。

0 投票
4 回答
256 浏览

java - scjp 传递对象

为什么调用 doStuff(h1) 后 h1 不改变?据我了解,对对象的引用应该被传递,并且在方法中它应该被替换为新对象。

0 投票
3 回答
3579 浏览

java - 单例、枚举和匿名内部类

您可能知道,有些人使用 Enum 为 1 个实例声明单例,因为 JVM 保证总会有一个没有并发问题需要处理的单个实例...

那么具有多个实例的 Enum 呢?我们可以说像 Enum 这样的东西是一种共享公共接口的有序单例吗?为什么?

在这段代码中为什么这不起作用: WITH_TAXES.getFormattedPrice(33f); 如果不通过公共接口就不能调用公共方法,那么声明公共方法有什么好处?我想这就是为什么我看不到任何语法能够仅为枚举的一个实例声明一个接口。


编辑:

似乎枚举实例是一种特殊的匿名类。因此,我理解为什么您不能调用该方法。

我的问题有点相关:为什么匿名类不能实现接口(除了它可能已经实现的接口!)

我完全理解为什么我们不能这样做:

(这里的 getName 不是覆盖)

为什么我不明白为什么我们不能用匿名类做到这一点:

或者会导致同样事情的事情。想一想:如果您不使用匿名类,您绝对可以扩展 Vehicle 类,然后让该子类实现您想要的任何其他接口......

我很确定,如果可能的话,我们将能够以类型安全的方式调用 WITH_TAXES.getFormattedPrice(33f),因为 WITH_TAXES 不是真正的 EnumPriceType,但它只是 EnumPriceType 的子类,具有自己的接口,并且通过使用硬编码的 WITH_TAXES 调用 WITH_TAXES.getFormattedPrice(33f),您可以在编译时知道您正在调用哪个 EnumPriceType 子项。

所以我的问题是:有什么理由说明这是不可能的吗?还是只是还没有完成?

0 投票
2 回答
3396 浏览

java - 将 Comparable 与 indexOf 一起使用

我尝试了以下简单的测试。

上述测试的输出是

我理解为什么第二行生成 3,但我不明白为什么第一行没有找到 title="Croydon" 的新行。

API 将该indexOf方法描述为

返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回 -1。更正式地说,返回最低索引 i 满足(o==null ? get(i)==null : o.equals(get(i))),或者-1如果没有这样的索引。

我认为 API 是说如果对象为空,那么它将返回列表中空对象第一次出现的索引。如果它不为 null,它将返回传入对象 equals 方法返回 true 的第一次出现的索引。

创建的对象不cities3.indexOf(new Cities("Croydon")应该等于之前添加的对象cities3.add(new Cities("Croydon"));吗?