循环谜题(谜题均转自JAVA学习宝典)
来源:互联网 发布:手机怎么制作软件程序 编辑:程序博客网 时间:2024/04/28 15:34
谜题24:尽情享受每一个字节
下面的程序循环遍历byte数值,以查找某个特定值。这个程序会打印出什么呢?(以下代码为正确解法)
public class BigDelight { private static final byte TARGET = (byte)0x90;public static void main(String[] args){for(byte b = Byte.MIN_VALUE; b < Byte.MAX_VALUE; b++){if (b == TARGET) {System.out.print("Joy!");}}}}
解:0x90是一个int常量,它超出了byte数值的范围。这与直觉是相悖的,因为0x90是一个两位的十六进制字面常量,每一个十六进制位都占据4个比特的位置,所以整个数值也只占据8个比特,即1个byte。合法的byte数值是从-128到+127,但是int常量0x90等于+144。系统总是强制地将一个操作数提升到与另一个操作数相匹配的类型。
因为在系统强制之前你可以考虑如下:
if (b == (byte)0x90) {System.out.print("Joy!");};if ((b & 0xff) == 0x90) {System.out.print("Joy!");}谜题25:无情的增量操作
下面的程序对一个变量重复的进行增量操作,然后打印它的值。那么这个值是什么呢?
public class Increment {public static void main(String[] args){int j = 0;for (int i = 0; i < 100; i++) {j = j++;System.out.println(j);}}}
解:表达式j++的值等于j在执行增量操作之前的初始值。因此,前面的赋值语句首先保存j的值,然后将j设置为其值加1,最后将j复位到它的初始值。换句话说这个赋值操作等价于下面的语句序列:
int tmp = j;j = j + 1;j = tmp;
订正该程序只需从循环中移除无关的赋值操作,只留下: j++;0 0
- 循环谜题(谜题均转自JAVA学习宝典)
- 表达式谜题(谜题均转自JAVA学习宝典)
- 字符谜题(谜题均转自JAVA学习宝典)
- java学习宝典总结
- java学习宝典总结
- <<java面试宝典>>学习笔记
- js宝典学习笔记,记录JAVA SCRIPT宝典中的内容
- java面试宝典读书笔记(三)-循环、条件、内存管理
- java面试宝典学习笔记(一)
- java面试宝典学习笔记(二)
- java面试宝典学习笔记(三)
- Java基础学习(面试宝典):
- java 宝典
- java宝典
- Java学习笔记-循环
- java学习 java -- 循环结构
- java学习 七、循环语句 for循环
- java学习 八、循环语句 while循环
- 如果只提交一个查询,有必要用事务吗?
- 北京炎黄盈动2017笔试题
- MYSQL用户权限管理学习笔记
- (第五章)黑盒测试用例设计技术
- 地宫寻宝
- 循环谜题(谜题均转自JAVA学习宝典)
- 【JVM笔记】Class版本号对应Java版本
- 超级台阶
- 树形DP-HDU2196
- 超级玛丽
- 图像自动去暗角算法(vegnetting
- 按钮控制显示隐藏
- Zero_One串
- Android中的Service介绍和生命周期