问题标签 [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 回答
1736 浏览

java - 文字字符串创建与字符串对象创建

创建了多少个 String 对象

我正在为 SCJP 学习,我似乎无法解决这个字符串问题。根据我看待问题的方式,我似乎看到了几个可能的答案。

在下面的初始化中,创建了多少个字符串对象?

最初我认为 5 个对象,即

但是再想一想我不太确定,因为例如编译器会连接"A" + "B"为一个对象吗?即创建 7 个对象?

此外,如果将代码更改为

最后怎么样:

在上面的例子中,我认为只会创建 2 个对象

这是正确的还是它们不相关?即,从常量池引用的对象将不同于 s2 引用所引用的对象。

谢谢

编辑

另外,请注意我有兴趣知道创建的对象总数,包括那些被丢弃的对象,而不仅仅是那些最终进入常量池的对象。

编辑

看着乔恩的回答,我可能完全误解了对象的创建方式。我知道一个字符串在常量池中只创建一次并且它被重用但我不确定构造“最终”字符串时所经历的过程。这是我正在阅读的书中的部分,这似乎表明创建了临时对象,这与这里的答案完全相反。(或者这本书是错的,或者我误解了这本书)

代码示例是

问题是

输出是什么?对于额外的功劳,在 println 语句之前创建了多少个 String 对象和多少个引用变量。

而答案

此代码片段的结果是spring water spring summer. 有两个参考变量,s1 和 s2。一共创建了八个String对象,分别为“spring”、“summer”(丢失)、“spring summer”、“falls”(丢失)、“spring fall”(丢失)、“spring summer spring”(丢失) ,“冬天”(丢失),“春天冬天”(此时“春天”丢失)。八个String对象中只有两个在这个过程中没有丢失

谢谢

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 的超级类型。

谢谢

0 投票
1 回答
808 浏览

java - 初始化块上的注释???静态与否

我只是在编写一个 Stripes 动作 bean,从一个带注释的方法开始。

我错误地写道:

编译器没问题

所以似乎我们可以在静态和非静态初始化块上添加注释

您对这种奇怪的事情有任何用例想法吗?

0 投票
2 回答
4453 浏览

java - OCP 1.6 or JAVA SE 7 programmer 1

I am having a little bit of knowledge in java and want to study java and do an oracle certification test.

JAVA SE 7 programmer 1 and JAVA SE 7 programmer 2 examinations are available for beta test , which means vary soon we can do the actual examination.

Previously i wanted to do scjp (any equivalent) and to do scwcd as soon as possible.

but now i am confused whether to do 1.6 or 7 because , what is equal to SCJP in SE 7 ,oracle says JAVA SE 7 programmer 1 is equal to associate certificate but added some scjp questions in version 7 and it is a prerequersite to do JAVA SE 7 programmer 2 ,Oracle says JAVA SE 7 programmer 2 is a broaden version of SCJP.

Inorder to do the latest Java EE exam what is the exam i have to choose , what is the prerequersite for Oracles certified Web Component Developer (JAVA SE 7 programmer 1 or JAVA SE 7 programmer 2 )other than SCJP (older versions )