“生存本来就是一种幸运,过去的地球上是如此,现在这个冷酷的宇宙中也到处如此。但不知从什么时候起,人类有了一种幻觉,认为生存成了唾手可得的东西,这就是你们失败的根本原因。” --《三体》智子
弱小和无知不是生存的障碍,傲慢才是。 --《三体》
问题来自《编写高质量代码:改善 Java 程序的 151 个建议》。
书中作者提出一个 ++i 的问题,需要读者确认下述一段代码输出结果是多少? 书中给出的答案是 0.
作者详细的介绍了为什么返回值是 0,让读者准确理解表达式的含义。并借此来告诫读者不要掉入自增的陷阱里面了。
public class Counter {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 10; i++) {
count =count++;
}
System.out.println("count="+count);
}
}
问题来自《Clean Code》.
书中作者举例说明两个线程并发访问 lastIdUsed 可能出现的情况。当 lastIdUsed 初始值为 93 时,两个线程并发调用下述代码,可能产生的值为 94、95。
读者并且展开讲解多线程并发情况下代码执行的可能顺序及其数量。
public class IdGenerator {
private int lastIdUsed;
public int increamentValue() {
return ++lastIdUsed;
}
}
在软件开发、测试过程中,需要有扎实的基础知识,以便发现、解决软件开发过程中潜藏很深的 bug。
本文由作者同步发布到知乎