JAVA_必考的程序阅读.doc
在Java编程中,程序阅读能力是一项非常重要的技能,它涉及到对代码的理解、异常处理、变量类型、运算符、流程控制等多个方面。以下是对给定文件中各段代码的详细解析: 1. 第一段代码: ```java public class Test { public static void main(String[] args) { Test o = new Test(); o.amethod(); } public void amethod(){ int oi = 012; //八进制表示的数字10 System.out.println(oi); //输出:10 } } ``` 这里的`012`是八进制数,转换为十进制是10,所以输出10。 2. 第二段代码: ```java public class Test { public static void main(String[] args) { int[] i = new int[5]; //创建一个长度为5的数组 System.out.println(i[5]); //尝试访问索引超出范围的元素,抛出ArrayIndexOutOfBoundsException } } ``` 尝试访问数组越界,Java会抛出`ArrayIndexOutOfBoundsException`。 3. 第三段代码: ```java public class Test { public static void main(String[] args) { int[] i = new int[5]; //创建一个长度为5的数组 System.out.println(i[4]); //访问数组最后一个元素,值为0 } } ``` 数组下标从0开始,`i[4]`是数组的最后一个元素,初始化时默认为0,所以输出0。 4. 第四段代码: ```java public class Test { static int j = 20; public static void main(String[] args) { int i = 10; Test p = new Test(); p.amethod(i); System.out.println(i); //输出:10 System.out.println(j); //输出:40 } public void amethod(int x) { x = x * 2; //x不会改变,因为传递的是值拷贝 j = j * 2; //静态变量j被更新 } } ``` `amethod`方法接收的是`i`的副本,改变副本不影响`i`本身,但静态变量`j`是共享的,因此会受影响。 5. 第五段代码: ```java public class Test { public static void main(String[] args) { System.out.println(5 | 7); //按位或操作,5的二进制是0101,7是0111,结果是0111,即7 } } ``` 按位或运算符`|`,5和7进行按位或运算,结果是7。 6. 第六段代码: ```java public class Test { public static void main(String[] args) { int i = 16; //16的二进制是10000 int j = 17; //17的二进制是10001 System.out.println(i >> 1); //右移一位,10000 >> 1 = 01000,即8 System.out.println(j >> 1); //同样右移一位,10001 >> 1 = 01000,即8 } } ``` 右移运算符`>>`,每个数字右移一位,高位补0。 7. 第七段代码: ```java public class Test { public static void main(String[] args) { System.out.println(010 | 4); //010是八进制的10,4是十进制的4,转换为二进制后按位或,结果是12(八进制) } } ``` 010(八进制)和4(十进制,转换为八进制是04)进行按位或运算,结果是12(八进制)。 8. 第八段代码: ```java public class Test { public static void main(String[] args) { int s = 10; s >>= 10; //右移10位,s变成0 System.out.println("s=" + s); //输出:s=0 } } ``` 右移10位,对于32位整数,相当于将所有位清零。 9. 第九段代码: ```java public class Test { public static void main(String[] args) { double d = -2.9; int i = (int) d; //强制类型转换,d取整为-3 i *= (int) Math.ceil(d); //Math.ceil返回大于等于d的最小整数,为-2,i变为-6 i *= (int) Math.abs(d); //Math.abs取绝对值,d为2.9,i变为-174 System.out.println(i); //输出:-174 } } ``` 这里涉及浮点数到整数的转换、天花板函数`Math.ceil`和绝对值函数`Math.abs`。 10. 第十段代码: ```java public class Test { public static void main(String[] args) { int m = 0; while (m++ < 2) { System.out.println(m); //先自增m,再比较,所以输出1和2 } } } ``` 循环条件是`m++ < 2`,每次循环前m自增1,因此会输出1和2。 11. 第十一段代码: ```java public class Test { public static void main(String[] args) { char[] c = new char[100]; System.out.println(c[50]); //未赋值的char数组元素默认是'\u0000',但打印时无显示 } } ``` 未初始化的字符数组元素默认为`'\u0000'`,打印时不显示任何内容。 12. 最后一段代码: ```java public class Test { public static void main(String[] args) { Boolean b1 = new Boolean(true); Boolean b2 = new Boolean(true); int result = b1 == b2 ? 1 : 0; //比较对象引用,非原始类型,所以不等,result为0 System.out.println(result); //输出:0 } } ``` `b1`和`b2`虽然值相同,但它们是两个不同的对象,因此`b1 == b2`返回`false`,结果为0。 通过这些代码,我们可以看到Java中的变量、数据类型、运算符、数组、流程控制、方法调用以及对象比较等多个关键知识点。理解和掌握这些知识点对于Java程序员来说至关重要,因为它们是编写和阅读程序的基础。
剩余28页未读,继续阅读
- 爵爷一回眸2013-12-18看了还算可以吧,不适合新手
- 粉丝: 0
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助