看看下面的代码,打印的会是什么呢?
public class Elementary {
public static void main(String[] args) {
System.out.println(12345 + 5432l);
}
}
相信很多人都会说是66666,其实真正的答案是17777。
问题的根源在于数字的1和字母的l很相似,如果不是特别仔细的观察,是很容易出错的。
另外再看一段代码:
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
l.add("Foo");
System.out.println(l);
}
类似地,我们很难判断打印的是列表l还是数字1。
总之,小写字母l和数字1在大多数打字机字体中几乎一样,为避免程序员对二者产生混淆,在使用long类型字面常量中,一定要用大写L,千万不要用小写的l,同时,避免用单个l字母作为变量名。
规范化后的代码如下:
public class Elementary {
public static void main(String[] args) {
System.out.println(12345 + 5432L);
}
}
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("Foo");
System.out.println(list);
}