几道小小的题目一起和大家更进一步地了解Java (3)
来源:互联网 发布:麻醉mac是什么意思 编辑:程序博客网 时间:2024/05/22 06:50
这是小题目的系列之三
之一:http://topic.csdn.net/u/20070828/10/7aa61fbc-8575-4212-85c4-582c08f81535.html
之二:http://topic.csdn.net/u/20070917/10/928cdd3b-0ec6-4236-a89d-7c3ddba8eaba.html
考虑到前两期的题目可能太难了,这次把难度降低了,以最简单的代码量来说明。
做题规则:老规矩,不允许上机操作,全部完成后可以将代码复制自行检测一下,需采用JDK1.5及以上版本
1,被遗忘掉的运算符
如果问大家“&”、“|”、“^”这三个是什么运算符?基会本上都会回答“位运算符”,但这样的回答只能得50分。大多数的Java程序员很可能不知道它还能充当其他的运算符——布尔逻辑运算符(前提是两边的数据类型为布尔类型)。
在布尔逻辑运算符中这三个运算符充当着“布尔逻辑与”、“布尔逻辑或”和“布尔逻辑异或”的角色。前面两个把它们再复制一个放在一起就成了逻辑运算符。布尔逻辑与(&)和布尔逻辑或(|)运算符的工作方式同逻辑与(&&)和逻辑或(||)的工作方式相同,布尔逻辑运算符的优先级别要高于逻辑运算符,除此之外它们还有一点细微的差别,看一看下面的程序将会输出什么,就会明白了。
最后一个布尔逻辑异或(^)用得就更少了,可以采用关系运算符不等于(!=)来代替,在此就不深究了。
布尔逻辑运算符与逻辑运算符还有个区别,就是布尔逻辑运算符可以与赋值运算符(=)结合成布尔逻辑赋值运算符(&=、|=、^=),而逻辑运算符就没有这样的功能,可能它本身就有两个了吧,再结合“=”的话就变三个了,呵呵,太多了 :)
- Java code
- public class Test1 { public static void main(String[] args) { int m = 5, n = 5; if((m != 5) && (n++ == 5)){} System.out.println("a." + n); m = n = 5; if((m != 5) & (n++ == 6)){} System.out.println("b." + n); m = n = 5; if((m == 5) || (n++ == 5)){} System.out.println("c." + n); m = n = 5; if((m == 5) | (n++ == 6)){} System.out.println("d." + n); }}
=====★==我==是==题==目==间==的==小==分==隔==符==★=====
2,自动装箱的疑惑
JDK1.5中增加了自动拆装箱的语言特性,在基本类型和包装类型之间可以相互地转换和运算。大家也都知道Java中==运算符是比较两个对象间的引用是否相同。在自动拆装箱与“==”运算符之间也会产生一些奇怪的事情,看看下面的程序将会输出什么?
- Java code
- public class Test2 { public static void main(String[] args) { int k = 100; Integer int1 = k; Integer int2 = k; System.out.println("a." + (int1 == int2)); k = 200; Integer int3 = k; Integer int4 = k; System.out.println("b." + (int3 == int4)); char c = 'A'; Character char1 = c; Character char2 = c; System.out.println("c." + (char1 == char2)); c = '国'; Character char3 = c; Character char4 = c; System.out.println("d." + (char3 == char4)); }}
=====★==我==是==题==目==间==的==小==分==隔==符==★=====
3,奇怪的/u与0x
/u是Unicode字符的前缀,而0x是十六进制数值的前缀,能通用吗?下面的程序是否能如愿以偿地将Hello与World!分成两行输出呢?
- Java code
- public class Test3 { public static void main(String[] args) { // 提示 /u000A 表示换行(LF),而 0x000A 表示什么呢? char c = 0x000A; System.out.println("Hello" + c + "World!"); }}
=====★==我==是==题==目==间==的==小==分==隔==符==★=====
[b]
- Java code
- 4,不可能发生的事情
[/b]
来个简单点的填空题哈,在空格处填上适当的数,让下面的程序能输出“Hello World!”。
- Java code
- public class Test4 { public static void main(String[] args) { int num = _____________; if(num < 0 && num == Math.abs(num)) { System.out.println("Hello World!"); } }}
=====★==我==是==题==目==间==的==小==分==隔==符==★=====
5,模棱两可的方法重载
invoke有两个重载的方法,一个是Object作为参数,另一个是int[]作为参数,看看下面的程序会输出什么?
- Java code
- public class Test5 { public static void main(String[] args) { invoke(null); } private static void invoke(Object obj) { System.out.println("Object"); } private static void invoke(int[] nums) { System.out.println("Arrays"); }}
=====★==我==是==题==目==间==的==小==分==隔==符==★=====
6,Number引起的计算错误
Number是众多数值类型的抽象父类,难道用它会引发计算错误?!看看下面的程序会输出什么?
- Java code
- public class Test6 { public static void main(String[] args) { Number num = 12345 + 5432l; System.out.println(num.intValue()); }}
以上题目参考或改编自:
[1] H.M.Deitel, P.J.Deitel,Java程序设计教程,清华大学出版社,2004
[2] D.Flanagan, Java in a Nutshell, 5th ed., O'Reilly Media, 2005
[3] B.McLaughlin, D.Flanagan, Java 5.0 Tiger程序高手秘笈,东南大学出版社,2005
[4] Sun Microsystems, The Java Language Specification, 3rd ed., Addison-Wesley, 2005
[5] Joshua Bloch, Neal Gafter, Java解惑,人民邮电出版社,2006
[6] Joshua Bloch, Effective Java中文版,机械工业出版社,2003
- 几道小小的题目一起和大家更进一步地了解Java (3)
- 几道小小的题目一起和大家更进一步地了解Java (4)
- 几道小小的题目一起和大家更进一步的了解 Java(1)
- 几道小小的题目一起和大家更进一步的了解 Java (2)
- 开心地来了,和大家一起交流!
- 写给亲学生:坚定地和大家一起进步
- 揭开java Socket编程的神秘面纱,让我们更进一步了解他
- 希望能和大家一起学习Java
- 和大家一起分享几组Android游戏源码
- 更进一步的了解Keil Flash的下载算法
- 通过小小的计算器 和大家认识一下相互帮助
- 有关前端的几种入门语言浅浅地了解
- Java 大数的几道题目 nyist
- 几道有意思的java编程题目
- Java和.Net 在较量中携手前进,关于2者之间的比较,几篇文章还概要性地对这2家人的世界做了介绍,是时候同时对java世界进行些了解了
- C解决的小小题目
- 希望和大家一起学习
- 大家一起谈谈java加壳的事情
- C语言中sizeof详解
- 几道小小的题目一起和大家更进一步的了解 Java (2)
- locate命令与find命令的区别
- C#免费窗体控件Krypton Toolkit 4.2.0中KyptonHeaderGroup的使用
- 转:查看内核版本命令
- 几道小小的题目一起和大家更进一步地了解Java (3)
- WPF相关介绍
- zoj 1577 GCD & LCM
- python调用第三方模块
- 一个表有两个外键指向另一个表的主键:如何区分显示
- Foreign function interface
- Android获取其他包的Context实例然后干坏事
- 晶体管电路设计下 【日】铃木雅臣
- 使用csdn感受