Tag: scjp

Java – 何时是编译器错误,何时是运行时exception?

我目前正在使用Sierra和Bates学习指南学习SCJP认证,并且在许多自我测试(模拟考试问题)中我一直遇到同样的问题 – 我无法判断特定错误是否会在运行时(一个exception)或编译时(编译错误)。 我知道这是一个模糊的问题,可能无法回答,但是,如何在编译或运行时发现错误? 你能给我发一些可以帮助我的网站链接吗?

java垃圾收集和null引用

在我为OCJP学习时,我遇到了以下问题: class CardBoard { Short story = 200; CardBoard go(CardBoard cb) { cb = null; return cb; } public static void main(String[] args) { CardBoard c1 = new CardBoard(); CardBoard c2 = new CardBoard(); CardBoard c3 = c1.go(c2); c1 = null; // do Stuff }} 当达到// doStuff时,有多少对象符合GC条件? 正确的答案是2,意思是c1及其story对象。 当达到// doStuff行时,c3也为空。 为什么它也不符合GC的条件?

哪个先运行? 实例变量或超级构造函数的默认值?

根据SCJP6(页577),我发现实例变量在超类构造函数完成之前被赋予了默认值,我在Debugg模式中尝试了一个例子,但我看到超级承包商在实例变量获取其默认值之前运行,可以任何一个解释那对我来说? 用例以防万一有人想尝试一下: package courseExercise; class test { test() { System.out.println(“Super Constructor run”); } } public class Init extends test { private Integer i = 6; private int j = 8; Init(int x) { super(); System.out.println(“1-arg const”); } Init() { System.out.println(“no-arg const”); } static { System.out.println(“1st static init”); } public static int d = 10; { […]

在“if”语句中与==和=混淆

我知道我们不能在java中的if语句中使用赋值运算符,因为我们在其他几种语言中使用它。 那是 int a; if(a = 1) { } 会给出编译错误。 但是下面的代码工作得很好,怎么样? boolean b; if(b = true) { } 编辑:这是一个例外,规则不能在if语句中使用赋值。

隐藏的字段虽然inheritance

在以下代码示例中: class Parent { int x =5; public Integer aMethod(){ System.out.print(“Parent.aMthod “); return x; } } class Child extends Parent { int x =6; public Integer aMethod(){ System.out.print(“Child.aMthod “); return x; } } class ZiggyTest2{ public static void main(String[] args){ Parent p = new Child(); Child c = new Child(); System.out.println(px + ” ” + […]

Java char到字节转换

我一直在测试char铸件,我经历了这个: public class Test { public static void main(String a[]) { final byte b1 = 1; byte b2 = 1; char c = 2; c = b1; // 1- Working fine c = b2; // 2 -Compilation error } } 任何人都可以解释为什么当我在字节中添加最后一个时它在1中正常工作?

标识与关键字

我在书中读到OCJP for Java6这部分断言。 我到达了这一部分,它概述了如果将’assert’一词用作关键字或标识符,编译器将如何反应。 Keyword和identifier什么区别? 任何人都可以给我一个简单的解释,另外还有一个或多个例子吗?

使用Serializable而不是写入和读取对象到文件

在哪些情况下,使用实现可序列化而不是写入和读取对象到/从文件是一个很好的编码实践。在一个项目中我经历了代码。 使用implements serializable的类,即使在该类/项目中没有任何写入/读取对象到/从文件?

SCJP:不能加宽然后盒子,但你可以盒子然后加宽

我正在攻读SCJP考试,我遇到了一个我无法真正解决的问题。 这本书说你不能加宽然后装箱,但你可以装盒然后加宽。 无法框的示例是期望Long的方法,并且使用字节调用该方法。 他们的解释是: 想一想……如果它先尝试先打包,那么该字节就会被转换为字节。 现在我们又回到尝试将字节扩展为Long,当然,IS-A测试失败了。 但这听起来像盒子,然后加宽而不是加宽,然后盒子给我。 任何人都可以澄清整个盒子并扩大与扩大和盒子对我来说因为它本来就不是很清楚这个问题。 编辑:澄清一下:我在谈论SCJP sun认证程序员的第252页和第253页,用于java 6书。 http://books.google.be/books?id=Eh5NcvegzMkC&pg=PA252#v=onepage&q&f=false

为什么这个同步方法没有按预期工作?

有人可以解释两个我为什么这些代码不输出相同的结果(两个代码之间的唯一区别在于run()方法)? 注意:第一个代码似乎没有做任何锁定! 第一个代码: class LetterThread extends Thread { private StringBuffer letter; public static void main(String[] args) { StringBuffer sbltr = new StringBuffer(“A”); LetterThread one = new LetterThread(sbltr); LetterThread two = new LetterThread(sbltr); LetterThread three = new LetterThread(sbltr); one.setName(“Thread ONE”); two.setName(“Thread TWO”); three.setName(“Thread THREE”); one.start(); two.start(); three.start(); } LetterThread(StringBuffer letter) { this.letter = letter; } public […]