
java解惑
a657282694
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
谜题2:找零时刻
请考虑下面这段话所描述的问题:Tom 在一家汽车配件商店购买了一个价值$1.10 的火花塞,但是他钱包中都是两美元一张的钞票。如果他用一张两美元的钞票支付这个火花塞,那么应该找给他多少零钱呢?下面是一个试图解决上述问题的程序,它会打印出什么呢?public class Change{public static void main(String args[]){System.ou转载 2014-01-24 09:59:26 · 537 阅读 · 0 评论 -
谜题10:八两
与上面的例子相反,如果我们给出的关于变量x 和i 的声明是如下的合法语句:x = x + i;但是,它并不是:x += i;乍一看,这个谜题可能看起来与前面一个谜题相同。但是请放心,它们并不一样。这两个谜题在哪一条语句必是合法的,以及哪一条语句必是不合法的方面,正好相反。就像前面的谜题一样,这个谜题也依赖于有关复合赋值操作符的规范中的细节。二者的相似之处就此打住。基于前转载 2014-02-08 14:31:12 · 551 阅读 · 0 评论 -
谜题8:Dos Equis
这个谜题将测试你对条件操作符的掌握程度,这个操作符有一个更广为人知的名字:问号冒号操作符。下面的程序将会打印出什么呢?public class DosEquis{public static void main(String[] args){char x = 'X';int i = 0;System.out.println(true ? x : 0);System.out.p转载 2014-02-07 10:18:25 · 557 阅读 · 0 评论 -
谜题7:互换内容
下面的程序使用了复合的异或赋值操作符,它所展示的技术是一种编程习俗。那么它会打印出什么呢?public class CleverSwap{public static void main(String[] args){int x = 1984; // (0x7c0)int y = 2001; // (0x7d1)x^= y^= x^= y;System.out.println转载 2014-02-07 10:15:21 · 590 阅读 · 0 评论 -
谜题6:多重转型
转型被用来将一个数值从一种类型转换到另一种类型。下面的程序连续使用了三个转型。那么它到底会打印出什么呢?public class Multicast{public static void main (String[] args){System.out.println((int)(char)(byte) -1);}}无论你怎样分析这个程序,都会感到很迷惑。它以int 数值-1转载 2014-01-28 09:30:35 · 688 阅读 · 0 评论 -
谜题5:十六进制的趣事
下面的程序是对两个十六进制(hex)字面常量进行相加,然后打印出十六进制的结果。这个程序会打印出什么呢?public class JoyOfHex{public static void main(String[] args){System.out.println(Long.toHexString(0x100000000L + 0xcafebabe));}}看起来很明显,转载 2014-01-28 09:26:40 · 845 阅读 · 0 评论 -
谜题4:初级问题
得啦,前面那个谜题是有点棘手,但它是有关整除的,每个人都知道整除是很麻烦的。那么下面的程序只涉及加法,它又会打印出什么呢?public class Elementary{public static void main(String[] args){System.out.println(12345+5432l);}}从表面上看,这像是一个很简单的谜题——简单到不需要纸和笔你就转载 2014-01-26 10:03:43 · 667 阅读 · 0 评论 -
谜题3:长整除
这个谜题之所以被称为长整除是因为它所涉及的程序是有关两个long 型数值整除的。被除数表示的是一天里的微秒数;而除数表示的是一天里的毫秒数。这个程序会打印出什么呢?public class LongDivision{public static void main(String args[]){final long MICROS_PER_DAY = 24 * 60 * 60 * 1000转载 2014-01-26 09:59:29 · 603 阅读 · 0 评论 -
谜题1:奇数性
下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转吗?public static boolean isOdd(int i){return i % 2 == 1;}奇数可以被定义为被2 整除余数为1 的整数。表达式 i % 2 计算的是 i 整除 2时所产生的余数,因此看起来这个程序应该能够正确运转。遗憾的是,它不能;它在四分之一的时间里返回的都是错误的答案。为转载 2014-01-24 09:44:22 · 648 阅读 · 0 评论 -
谜题2:找零时刻
请考虑下面这段话所描述的问题:Tom 在一家汽车配件商店购买了一个价值$1.10 的火花塞,但是他钱包中都是两美元一张的钞票。如果他用一张两美元的钞票支付这个火花塞,那么应该找给他多少零钱呢?下面是一个试图解决上述问题的程序,它会打印出什么呢?public class Change{public static void main(String args[]){System.ou转载 2014-01-24 09:51:59 · 183 阅读 · 0 评论 -
谜题9:半斤
现在该轮到你来写些代码了,好消息是,你只需为这个谜题编写两行代码,并为下一个谜题也编写两行代码。这有什么难的呢?我们给出一个对变量x 和i 的声明即可,它肯定是一个合法的语句:x += i;但是,它并不是:x = x + i;许多程序员都会认为该迷题中的第一个表达式(x += i)只是第二个表达式(x =x + i)的简写方式。但是这并不十分准确。这两个表达式都被称为赋值表达式。转载 2014-02-08 14:30:01 · 602 阅读 · 0 评论