- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在准备 SCJP 考试,遇到了一个我无法真正解决的问题。
书上说不能先加宽再装箱,但可以先装箱再加宽。无法装箱的示例是一个需要 Long 的方法和一个字节调用的方法。
他们的解释是:
Think about it…if it tried to box first, the byte would have been converted to a Byte. Now we're back to trying to widen a Byte to a Long, and of course, the IS-A test fails.
但这对我来说听起来像是 box and then widen 和 not widen and box。
任何人都可以为我阐明整个框并加宽与加宽和框,因为就目前而言,这本书在这个问题上并不十分清楚。
编辑:澄清一下:我说的是 SCJP sun 认证的 Java 6 程序员一书的第 252 和 253 页。 http://books.google.be/books?id=Eh5NcvegzMkC&pg=PA252#v=onepage&q&f=false
最佳答案
语言困惑。
基本上你不能以这种方式进行:
字节 -> 字节 -> 长
因为 Byte 和 Long 不共享 is-a 关系。
因此,它尝试这样做:
字节 -> 长 -> 长
但它也不能这样做(显然是由于编译器的限制)。因此,它失败并引发错误。
但是,另一方面你可以这样做:
字节 -> 字节 -> 对象
因为 Byte 是一个对象。
考虑 2 个函数和一个字节变量:
toLong(长x)
toObject(对象 x)
字节 b = 5;
那么这条语句将是非法的:
到长(b);
//因为 b -> new Byte(b) -> new Long(new Byte(b)) 是非法的。
由于编译器限制,AND byte -> long -> Long 无法完成。
但是这个声明是合法的:
toObject(b);
//因为 b -> new Byte(b) -> new Object(new Byte(b)) 是合法的。
关于java - SCJP:不能加宽然后装箱,但可以装箱然后加宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3720883/
我之前遇到的关于 SO 的问题已经将近 2 年了。 我刚刚为 SCJP 6 购买了 Kathy Sierra 和 Bert Bates 的书。但它发生了,所以现在在我阅读博客时,我听说 SCJP“PL
嗨,我无法理解为什么输出是 'ex [6, 7, b, d] [6, 7, b]' 这段代码。请有人建议子集如何与 数字和字母?谢谢 import java.util.*; public class
在调试java多线程程序时,我设置了断点。在启动方法调用后,控件将不会运行menthod,您可以让我知道调试过程吗? 示例代码 class Test extends Thread { publ
public class Hotel { private int roomNr; public Hotel(int roomNr) { this.roomNr = ro
下面将因“标签 z 丢失”而编译失败,但如果我只是将 z: 移动到 o = o + 2 之后的下面一步,那么这会起作用吗?这背后的逻辑是什么? public class Breaker { stati
考虑: class Building { Building() { System.out.print("b "); } Building(String name
public class Starter extends Thread{ private int x = 2; public static void main(String[]
给出下面的代码。该代码由“java Test 1 2 3 4”运行。结果是什么? public class Test { public static void main(String args[])
另一个让我困惑的考试问题: public String makinStrings() { String s = “Fred”; s = s + “47”; s = s.substring(2,
我在理解 K&B 的 SCJP 书中《面向对象》一章中的问题 9 时遇到问题。 问题: public class Redwood extends Tree { public static void m
即使得到正确答案,我也无法弄清楚 SCJP 问题: 从以下代码(来源:http://scjptest.com)中,我们需要确定何时引用为 myInt 的对象符合垃圾回收条件: 01.public vo
给定: public class LineUp { public static void main(String[] args) { double d = 12.345;
只是想知道 SUN 是否提供任何可用于 SCJP 的好东西(免费或付费)??我听说微软正在提供这样的好东西。有人对此有任何想法吗? 干杯,对战 最佳答案 你可以把它写在你的简历上。大部分就是这样。 肯
这个问题来自 SCJP 转储。可能看起来很愚蠢,但我对选项有点困惑。请帮帮我 public class Donkey2 { public static void main(String[] ar
public class Person { private String name; public Person(String name) { this.name =
实际上来自SCJP 6 StudyGuide Exam310-065(MGH,2008) alt text http://www.freeimagehosting.net/uploads/1f3746
我无法理解 SCJP 书籍 K&B 第 9 章(线程)中的以下程序 问题: class Dudes{ static long flag = 0; // insert code her
Kathey Sierra 的 SCJP 书中摘录如下: If a method is overridden but you use a polymorphic (supertype) referen
public class Threads2 implements Runnable { public void run() { System.out.println("run.
这个问题是由考试实验室操纵的 public class B{ public static void main(String args[]){ byte g =10;
我是一名优秀的程序员,十分优秀!