java
iteye_1627
这个作者很懒,什么都没留下…
展开
-
有毒的括号垃圾
出自《java puzzle》你能否举出这样一个合法的Java表达式,只要对它的某个子表达式加上括号就可以使其成为不合法的表达式,而添加的括号只是为了注解未加括号时赋值的顺序?插入一对用来注解现有赋值顺序的括号对程序的合法性似乎是应该没有任何影响的。事实上,绝大多数情况下确实是没有影响的。但是,在两种情况下,插入一对看上去没有影响的括号可能会令合法的Java程序变得不合法。这种奇怪...2009-05-16 17:01:10 · 168 阅读 · 0 评论 -
一揽子交易
出自《java puzzle》下面这个程序设计在不同的包中的两个类的交互,main方法位于hack.TypeIt中。那么,这个程序会打印什么呢?[code="java"]package hack;import click.CodeTalk;public class TypeIt { private static class ClickIt extends Co...2009-04-01 10:25:07 · 428 阅读 · 0 评论 -
灰色的阴影
出自《java puzzle》下面的程序在相同的范围内具有两个名字相同的声明,并且没有任何明显的方式可以在它们二者之间做选择。这个程序会打印Black吗?它会打印White吗?甚至,它是合法的吗?[code="java"]public class ShadesOfGray {public static void main(String[] args){System.ou...2009-03-24 11:33:08 · 156 阅读 · 0 评论 -
对字符串上瘾
出自 《java puzzle》一个名字可以被用来引用位于不同包内的多个类。下面的程序就是在探究当你重用了一个平台类的名字时,会发生什么。你认为它会做些什么呢?尽管这个程序属于那种让你通常一看到就会感到尴尬的程序,但是你还是应该继续下去,把门锁上,把百叶窗拉上,然后试试看:[code="java"]public class StrungOut {public static vo...2009-03-23 10:38:46 · 111 阅读 · 0 评论 -
一件私事
出自 《java puzzle》在下面的程序中,子类的一个域具有与超类的一个域相同的名字。那么,这个程序会打印出什么呢?class Base {public String className = "Base";}class Derived extends Base {private String className = "Derived";}public...2009-03-21 13:24:44 · 201 阅读 · 0 评论 -
一种疑似排序的惊人传奇
出自《java puzzle》下面的程序使用定制的比较器,对一个由随机挑选的Integer实例组成的数组进行排序,然后打印了一个描述了数组顺序的单词。回忆一下,Comparator接口只有一个方法,即compare,它在第一个参数小于第二个参数时返回一个负数,在两个参数相等时返回0,在第一个参数大于第二个参数时返回一个整数。这个程序是展示5.0版特性的一个样例程序。它使用了自动包装和解...2009-03-19 10:43:00 · 115 阅读 · 0 评论 -
名字游戏
出自《java puzzle》下面的程序将两个映射关系放置到了一个映射表中,然后打印它们的尺寸。那么,它会打印出什么呢?import java.util.*;public class NameGame {public static void main(String args[ ]) {Map m =new IdentityHashMap();m.put("Mic...2009-03-18 15:35:37 · 181 阅读 · 0 评论 -
一行的方法
出自《java puzzle》现在该轮到你写一些代码了。下面的谜题每一个都可以用一个方法来解决,这些方法的方法体都只包含一行代码。各就各位,预备,编码!• A.编写一个方法,它接受一个包含元素的List,并返回一个新的List,它以相同的顺序包含相同的元素,只不过它把第二次以及后续出现的重复元素都剔除了。例如,如果你传递了一个包含”spam”,”sausage”,”spam”,...2009-03-14 16:27:07 · 120 阅读 · 0 评论 -
差是几个
出自《java puzzle》下面的程序在计算一个int数组中的元素两两之间的差,将这些差置于一个集合中,然后打印该集合的尺寸大小。那么,这个程序将打印出什么呢?[code="java"]import java.util.*;public class Differences {public static void main(String[ ] args) {int va...2009-03-12 13:21:11 · 268 阅读 · 0 评论 -
进口税
出自《java puzzle》在5.0版中,Java平台引入了大量的可以使操作数组变得更加容易的工具。下面这个谜题使用了变量参数、自动包装、静态导入(请查看http://java.sun.com/j2se/5.0/docs/guide/language [Java-5.0])以及便捷方法Arrays.toString(请查看谜题60)。那么,这个程序会打印什么呢?[code="java...2009-04-02 11:08:58 · 118 阅读 · 0 评论 -
终极危难
出自《java puzzle》本谜题旨在检验当你试图隐藏一个final域时将要发生的事情。下面的程序将做些什么呢?[code="java"]class Jeopardy { public static final String PRIZE = "$64,000"; }public class DoubleJeopardy extends Jeopardy { pub...2009-04-03 11:48:02 · 123 阅读 · 0 评论 -
你的隐私正在被公开
出自《java puzzle》私有成员,即私有方法、域和类型这些概念的幕后思想是它们只是实现细节:一个类的实现者可以随意地添加一个新的私有成员,或者修改和移除一个旧的私有成员,而不需要担心对该类的客户造成任何损害。换句话说,私有成员被包含它们的类完全封装了。遗憾的是,在这种严密的盔甲保护中仍然存在细小的裂缝。例如,序列化就可以打破这种封装。如果使一个类成为可序列化的,并且接受缺省的...2009-04-07 22:34:12 · 126 阅读 · 0 评论 -
诵读困难者的一神论
出自《java puzzle》从前有一个人,他认为世上只有一只不寻常的狗,所以他写出了如下的类,将它作为一个单件(singleton)[Gamma95]:[code="java"]public class Dog extends Exception { public static final Dog INSTANCE = new Dog(); private Dog...2009-05-08 15:17:55 · 139 阅读 · 0 评论 -
烧焦到无法识别
出自《java puzzle》下面这个程序看起来是在用一种特殊的方法做一件普通的事。那么,它会打印出什么呢?[code="java"]public class Greeter{ public static void main(String[] args){ String greeting = "Hello World"; for(int i = 0; i < ...2009-05-06 00:01:32 · 105 阅读 · 0 评论 -
反射的污染
出自《java puzzle》这个谜题举例说明了一个关于反射的简单应用。这个程序会打印出什么呢?[code="java"]import java.util.*;import java.lang.reflect.*;public class Reflector { public static void main(String[] args) throws Excep...2009-04-30 14:25:12 · 128 阅读 · 0 评论 -
异常为循环而抛
出自《java puzzle》下面的程序循环遍历了一个int类型的数组序列,并且记录了满足某个特定属性的数组个数。那么,该程序会打印出什么呢?[code="java"]public class Loop { public static void main(String[] args) { int[][] tests = { { 6, 5, 4, 3, 2, 1 ...2009-04-22 15:33:47 · 136 阅读 · 0 评论 -
不情愿的构造器
出自《java puzzle》尽管在一个方法声明中看到一个throws子句是很常见的,但是在构造器的声明中看到一个throws子句就很少见了。下面的程序就有这样的一个声明。那么,它将打印出什么呢?[code="java"]public class Reluctant { private Reluctant internalInstance = new Reluctant();...2009-04-13 23:38:42 · 103 阅读 · 0 评论 -
不受欢迎的宾客
出自《java puzzle》本谜题中的程序所建模的系统,将尝试着从其环境中读取一个用户ID,如果这种尝试失败了,则缺省地认为它是一个来宾用户。该程序的作者将面对有一个静态域的初始化表达式可能会抛出异常的情况。因为Java不允许静态初始化操作抛出被检查异常,所以初始化必须包装在try-finally语句块中。那么,下面的程序会打印出什么呢?[code="java"]public c...2009-04-10 13:16:43 · 131 阅读 · 0 评论 -
极端不可思议
出自《java puzzle》本谜题测试的是你对某些规则的掌握程度,这些规则用于声明从方法中抛出并被catch语句块所捕获的异常。下面的三个程序每一个都会打印些什么?不要假设它们都可以通过编译:[code="java"]import java.io.IOException;public class Arcane1 { public static void main(S...2009-04-09 13:38:30 · 138 阅读 · 0 评论 -
同一性的危机
出自《java puzzle》下面的程序是不完整的,它缺乏对Enigma的声明,这个类扩展自java.lang.Object。请为Enigma提供一个声明,它可以使该程序打印false:[code="java"]public class Conundrum {public static void main(String[] args) {Enigma e = new...2009-04-08 13:46:11 · 137 阅读 · 0 评论 -
产生它的散列码
出自 《java puzzle》本谜题试图从前一个谜题中吸取教训。下面的程序还是由一个Name类和一个main方法构成,这个main方法还是将一个名字放置到一个散列集合中,然后检查该集合是否包含了这个名字。然而,这一次Name类已经覆写了hashCode方法。那么下面的程序将打印出什么呢?[code="java"]import java.util.*;public cl...2009-03-11 09:35:24 · 110 阅读 · 0 评论 -
名字里有什么
出自《java puzzle》下面的程序包含了一个简单的不可变类,它表示一个名字,其main方法将一个名字置于一个集合中,并检查该集合是否确实包含了该名字。那么,这个程序到底会打印出什么呢?[code="java"]import java.util.*;public class Name {private String first, last;public Name(S...2009-03-07 13:01:40 · 173 阅读 · 0 评论 -
大问题
出自《java puzzle》作为一项热身活动,我们来测试一下你对BigInteger的了解程度。下面这个程序将打印出什么呢?[code="java"]import java.math.BigInteger;public class BigProblem {public static void main(String[ ] args) {BigInteger fiv...2009-03-06 13:08:11 · 86 阅读 · 0 评论 -
我的类是什么
下面的程序被设计用来打印它的类文件的名称。如果你不熟悉类字面常量,那么我告诉你Me.class.getName()将返回Me类完整的名称,即“com.javapuzzlers.Me”。那么,这个程序会打印出什么呢?[code="java"]package com.javapuzzlers;public class Me {public static void main(String...2009-02-18 10:06:11 · 80 阅读 · 0 评论 -
循环者遇到了狼人
请提供一个对i的声明,将下面的循环转变为一个无限循环。这个循环不需要使用任何5.0版的特性:while (i != 0 && i == -i) {}这仍然是一个循环。在布尔表达式(i != 0 && i == -i)中,一元减号操作符作用于i,这意味着它的类型必须是数字型的:一元减号操作符作用于一个非数字型操作数是非法的。因此,我们要寻找一个非0的数字型数值,它等于它自己的负值。NaN...2009-02-17 10:23:12 · 147 阅读 · 0 评论 -
循环者的诅咒
请提供一个对i的声明,将下面的循环转变为一个无限循环:while (i2009-02-16 09:53:16 · 145 阅读 · 0 评论 -
java泛型方法的使用
这俩天把泛型认真的看了看,对于泛型方法还是不太明白。用泛型方法有什么好处,在什么情况下使用,比如:[code="java"]public void fromArrayToCollection(T[] a, Collection c){ for(T t : a){ c.add(t); } }public void fromArrayToCollect...2009-02-13 17:14:52 · 78 阅读 · 0 评论 -
循环者的新娘
请提供一个对i的声明,将下面的循环转变为一个无限循环:while (i != i) {}这个循环可能比前一个还要使人感到困惑。不管在它前面作何种声明,它看起来确实应该立即终止。一个数字总是等于它自己,对吗?对,但是IEEE 754浮点算术保留了一个特殊的值用来表示一个不是数字的数量[IEEE 754]。这个值就是NaN(“不是一个数字(Not a Number)”的缩写),...2009-02-13 09:47:21 · 102 阅读 · 0 评论 -
不劳无获
出自java puzzle[code="java"]public void phymes(){ Random rnd = new Random(); StringBuffer word = null; switch(rnd.nextInt(2)){ case 1: word = new StringBuffer('P'); case 2: word =...2009-02-12 10:01:28 · 208 阅读 · 0 评论 -
java泛型
[size=large]此系列文章译自SUN的泛型编程指南, 原文地址http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf一、绪言JDK1.5对JAVA语言进行了做了几个扩展,其中一个就是泛型。本指南旨在介绍泛型。如果你熟悉其它语言的构造类似的东西,特别是C++的模板(template),你会很快发现它们之间的...2009-02-11 11:40:24 · 90 阅读 · 0 评论 -
长整除
java puzzle里的一个例子,有点意思,这个方法会打印什么结果?public void longDivsion(){ long micros = 24 * 60 * 60 * 1000 * 1000; long millis = 24 * 60 * 60 * 1000; System.out.println(micros/millis);}...2009-02-10 13:25:15 · 132 阅读 · 0 评论 -
我的类是什么2
下面的程序所要做的事情正是前一个谜题所做的事情,但是它没有假设斜杠符号就是分隔文件名组成部分的符号。相反,该程序使用的是java.io.File.separator,它被指定为一个公共的String域,包含了平台相关的文件名分隔符。那么,这个程序会打印出其正确的、平台相关的类文件名吗?[code="java"]package com.javapuzzlers;import java...2009-02-19 09:43:35 · 86 阅读 · 0 评论 -
令人混淆的构造器案例
本谜题呈现给你了两个容易令人混淆的构造器。main方法调用了一个构造器,但是它调用的到底是哪一个呢?该程序的输出取决于这个问题的答案。那么它到底会打印出什么呢?甚至它是否是合法的呢?[code="java"]public class Confusing {private Confusing(Object o) {System.out.println("Object");}p...2009-02-20 10:19:34 · 103 阅读 · 0 评论 -
URL的愚弄
本谜题利用了Java编程语言中一个很少被人了解的特性。请考虑下面的程序将会做些什么?[code="java"]public class BrowserTest {public static void main(String[] args) {System.out.print("iexplore:");http://www.google.com;System.out.prin...2009-02-21 09:42:42 · 130 阅读 · 0 评论 -
特别论
出自《java puzzle》某些时候,对于一个类来说,跟踪其创建出来的实例个数会非常用有,其典型实现是通过让它的构造器递增一个私有静态域来完成的。在下面的程序中,Creature类展示了这种技巧,而Creator类对其进行了操练,将打印出已经创建的Creature实例的数量。那么,这个程序会打印出什么呢?[code="java"]public class Creator {...2009-03-03 17:10:28 · 105 阅读 · 0 评论 -
Null与Void
出自《java puzzle》下面仍然是经典的Hello World程序的另一个变种。那么,这个变种将打印什么呢?[code="java"]public class Null { public static void greet() { System.out.println("Hello world!"); } public static void mai...2009-03-02 10:25:56 · 104 阅读 · 0 评论 -
合计数的玩笑
出自《java puzzle》下面的程序在一个类中计算并缓存了一个合计数,并且在另一个类中打印了这个合计数。那么,这个程序将打印出什么呢?这里给一点提示:你可能已经回忆起来了,在代数学中我们曾经学到过,从1到n的整数总和是n(n+1)/2。[code="java"]class Cache {static {initializeIfNecessary();}pri...2009-02-28 10:40:12 · 131 阅读 · 0 评论 -
那个点是什么
出自《java puzzle》下面这个程序有两个不可变的值类(value class),值类即其实例表示值的类。第一个类用整数坐标来表示平面上的一个点,第二个类在此基础上添加了一点颜色。主程序将创建和打印第二个类的一个实例。那么,下面的程序将打印出什么呢?[code="java"]class Point { protected final int x, y; private...2009-02-27 13:45:23 · 181 阅读 · 0 评论 -
不是你的类型
出自《java puzzle》本谜题要测试你对Java的两个最经典的操作符:instanceof和转型的理解程度。下面的三个程序每一个都会做些什么呢?[code="java"]public class Type1 {public static void main(String[] args) {String s = null;System.out.println(s...2009-02-26 09:37:28 · 86 阅读 · 0 评论 -
比生命更大
出自《java puzzle》假如小报是可信的,那么摇滚之王“猫王”就会直到今天仍然在世。下面的程序用来估算猫王当前的腰带尺寸,方法是根据在公开演出中所观察到的他的体态发展趋势来进行投射。该程序中使用了Calendar.getInstance().get(Calendar.YEAR)这个惯用法,它返回当前的日历年份。那么,该程序会打印出什么呢?[code="java"]public...2009-02-25 13:10:10 · 105 阅读 · 0 评论