有日子没有更新了。最近除了一直在Twitter上鬼混外,还花了一星期的时间准备Sun Microsystems的Java Certificate考试。终于知道,啥叫温故而知新!
以前学Java的时候,Java还是初出襁褓的婴儿。一晃间Java7已经呼之欲出了,大有和Windows并驾齐驱之势。印象里,简洁是Java的鲜明特征。和当时占主导地位的C++相比,1.2版的Java是非常冰清玉洁的。C++的所有功能,Java都以更为简洁的方式实现。
而如今的Java,给我的感觉则在逐渐失去往日的童贞。现在的Java代码,一眼望去鱼目混杂,什么都有(JavaDoc、HTML、Generics、Annotation),怎么看都像乱码。对于我来说,连猜带蒙,勉强可以看懂一半。整个复习的过程当中,一个念头不断闪现:Do I know Java?
现在的Java语言,for-loop还可以有这种高雅写法:for (int i: numbers)。而以前经常使用的Vector现在已经成为活化石了。取而代之的,是几十种功能精细、专业化程度极高的Collection。而且通常得这么写:List<? extends String> list。这个叫Generic Type——据说Java高手都要熟练掌握这种写法。我个人认为,这种写法很装逼。
新版本的Java里,最新出现的一种怪兽叫做Annotation。这是一种介于代码和注解之间的一种东西。它不像注解那样直接被编译器忽略,也不像代码那样被编译成指令,它是程序员和编译器沟通的语句。Annotation以这样的形式出现:@Override、@SuppressWarnings等等。
再来说说SCJP的考试。SCJP考试既难也不难,属于Java认证系列里比菜鸟级略强的级别。不难是因为考到58分就算通过。难是因为考试不但要求你把Java编译器的规则了然于心、常用类的API喑熟于胸,还要有像精神病一样敏感的神经。高深的不说,就是基础类型最简单的计算题都让我眼界大开。比如,自信的同学可以试试回答以下问题 :
- int i = 0; i+=++i+i++; // i是多少?
- int j = 6^3; // j是多少?
- Double d = 1.0f; // d是多少?
- boolean b = Double.NaN == Double.NaN; // b是多少?
报了名后我才意识到,一个星期光是温故都有点困难,还要学那么多新知。但今天还是仓促地去参加了考试。考试开始后,我又意识到一个更棘手的技术问题。我复习时做的网上模拟题全是Java5.0版本的,6.0完全不一回事儿!于是,跟6.0有关的题目我就直接过,跟Concurrency有关的也直接过——这个不用想了,从来都没有用过。5.0以上的内容educated guess。结束前我数了一下,保证做对的——满打满算——有25题(总共60题)。结果当场出来,老天爷垂青,蒙对17题,总共做对42题。过了!


![Validate my RSS feed [Valid RSS]](valid-rss.png)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](valid-atom.png)
最近评论