摘要:
下面的程序所要做的事情正是前一个谜题所做的事情,但是它没有假设斜杠符号就是分隔文件名组成部分的符号。相反,该程序使用的是java.io.File.separator,它被指定为一个公共的String域,包含了平台相关的文件名分隔符。那么,这个程序会打印出其正确的、平台相关的类文件名吗? 这个程序根据 阅读全文
摘要:
本谜题利用了Java编程语言中一个很少被人了解的特性。请考虑下面的程序将会做些什么? 这是一个有点诡异的问题。该程序将不会做任何特殊的事情,而是直接打印iexplore::maximize。在程序中间出现的URL是一个语句标号(statement label)[JLS 14.7]后面跟着一行行尾注释 阅读全文
摘要:
下面的程序用一个方法对字符进行了分类。这个程序会打印出什么呢? 如果你猜想该程序将打印LETTER UNKNOWN NUMERAL,那么你就掉进陷阱里面了。这个程序连编译都通不过。让我们再看一看相关的部分,这一次我们用粗体字突出注释部分: 正如你之所见,注释在包含了字符*/的字符串内部就结束了,结果 阅读全文
摘要:
下面的程序被设计用来打印它的类文件的名称。如果你不熟悉类字面常量,那么我告诉你Me.class.getName()将返回Me类完整的名称,即“com.javapuzzlers.Me”。那么,这个程序会打印出什么呢? 该程序看起来会获得它的类名(“com.javapuzzlers.Me”),然后用“/ 阅读全文
摘要:
下面的程序从一个字节序列创建了一个字符串,然后迭代遍历字符串中的字符,并将它们作为数字打印。请描述一下程序打印出来的数字序列: 首先,byte数组用从0到255每一个可能的byte数值进行了初始化,然后这些byte数值通过String构造器被转换成了char数值。最后,char数值被转型为int数值 阅读全文
摘要:
下面的是一个合法的Java程序吗?如果是,它会打印出什么呢? 这当然是一个合法的Java程序!这不是很显而易见吗?它会打印Hello World。噢,可能是不那么明显。事实上,该程序根本让人无法理解。每当你没必要地使用了一个Unicode转义字符时,都会使你的程序的可理解性更缺失一点,而该程序将这种 阅读全文
摘要:
下面的程序是对一个老生常谈的例子做出了稍许的变化之后的版本。那么,它会打印出什么呢? 这个谜题看起来相当简单。该程序包含了两条语句,第一条打印Hell,而第二条在同一行打印。 world,从而将两个字符串有效地连接在了一起。因此,你可能期望该程序打印出Hello world。但是很可惜,你犯了错,实 阅读全文
摘要:
行分隔符(line separator)是为用来分隔文本行的字符或字符组合而起的名字,并且它在不同的平台上是存在差异的。在Windows平台上,它是CR字符(回车)和紧随其后的LF字符(换行)组成的,而在UNIX平台上,通常单独的LF字符被当作换行字符来引用。下面的程序将这个字符传递给了printl 阅读全文
摘要:
下面的程序使用了两个Unicode的转义字符,它们是用其十六进制代码来表示Unicode字符。那么,这个程序会打印什么呢? 对该程序的一种很肤浅的分析会认为它应该打印出26,因为在由两个双引号"a\u0022.length()+\u0022b"标识的字符串之间总共有26个字符。 稍微深入一点的分析会 阅读全文
摘要:
George Orwell的《畜牧场(Animal Farm)》一书的读者可能还记得老上校的宣言:“所有的动物都是平等的。”下面的Java程序试图要测试这项宣言。那么,它将打印出什么呢? 对该程序的表面分析可能会认为它应该打印出Animal are equal: true。毕竟,pig和dog都是f 阅读全文