- 浏览: 1333931 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kay11:
...
JAVA生成简单的随机字符串(a-zA-Z0-9) -
zhangliguoaccp:
您好关于登录页面的验验证码这块怎么解决的?还有登录成功后,跳转 ...
JAVA,模拟HTTP登录 -
107x:
不错,谢谢!
<c:foreach 循环 map -
wenjin:
不知楼主是不还在想请叫一下我自己开的Tomcat下载一个文件C ...
Android 下载文件及写入SD卡 -
zyywgf:
JSTL c标签,fn标签,fmt标签
从BBS上看的一个帖子,摘录几条下来:
看了一段北风网的视频,总结几个经典的java陷阱给大家。
建议先思考一下结果,然后运行代码试验。也许你会恍然大悟。
1、找奇数:
public static boolean isOdd(int i){
return i % 2 == 1;
}
public static boolean isOdd(int i){
return i % 2 == 1;
}
上面的方法真的能找到所有的奇数么?
A:没有考虑到负数问题,如果传参是负数,那么永远不能得到结果!应该是:return i % 2 != 0;
2、浮点数想减
System.out.println(2.0-1.9);
System.out.println(2.0-1.9);
上面会打印0.1么?
A:不会,自己试验就知道结果了。正确做法:用decimal。
3、交换
int x = 2010;
int y = 2012;
x^=y^=x^=y;
System.out.println("x= " + x + "; y= " + y);
int x = 2010;
int y = 2012;
x^=y^=x^=y;
System.out.println("x= " + x + "; y= " + y);
x、y的值呼唤了么?
A:没有,java运算顺序是从左到右的,应该这么写:y=(x^= (y^= x))^ y;
4、字符和字符串
+ expand source
System.out.println("H" + "a");
System.out.println('H' + 'a');
System.out.println("H" + "a");
System.out.println('H' + 'a');
上面两个语句输出结果相同么?
A:不想同,字符会被转换成在数字。所以第一句输出:Ha,第二句输出两个字符的assii码相加的数字。
5、无限循环
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100;
public static void main(String[] args) {
int count = 0;
for (int i = START; i <= END; i++)
count++;
System.out.println(count);
}
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100;
public static void main(String[] args) {
int count = 0;
for (int i = START; i <= END; i++)
count++;
System.out.println(count);
}
上面程序运行的结果是什么?
A:无限循环。将i<=END改成i<END?为什么呢?你知道的,呵呵!
6、计数器问题
int minutes = 0;
for (int ms = 0; ms < 60*60*1000; ms++)
if (ms % 60*1000 == 0)
minutes++;
System.out.println(minutes);
int minutes = 0;
for (int ms = 0; ms < 60*60*1000; ms++)
if (ms % 60*1000 == 0)
minutes++;
System.out.println(minutes);
结果跟你想的一样么?
A:呵呵,括号问题,不多说!
7、到底返回什么?
public static boolean decision() {
try {
return true;
} finally {
return false;
}
}
public static boolean decision() {
try {
return true;
} finally {
return false;
}
}
true?false?
A:一般情况下,不管怎么说try/catch代码块中,finally总是最后被执行的 。
8、错误里聚集遍历
public static void main(String[] args) {
Vector v = new Vector();
v.add("one");
v.add("two");
v.add("three");
v.add("four");
Enumeration enume = v.elements();
while (enume.hasMoreElements()){
String s = (String) enume.nextElement();
if (s.equals("two"))
v.remove("two");
else{
System.out.println(s);
}
}
System.out.println("What's really there...");
enume = v.elements();
while (enume.hasMoreElements()){
String s = (String) enume.nextElement();
System.out.println(s);
}
}
public static void main(String[] args) {
Vector v = new Vector();
v.add("one");
v.add("two");
v.add("three");
v.add("four");
Enumeration enume = v.elements();
while (enume.hasMoreElements()){
String s = (String) enume.nextElement();
if (s.equals("two"))
v.remove("two");
else{
System.out.println(s);
}
}
System.out.println("What's really there...");
enume = v.elements();
while (enume.hasMoreElements()){
String s = (String) enume.nextElement();
System.out.println(s);
}
}
运行代码看看结果跟你想的一样么?
A:一般不建议在遍历聚集的时候对聚集进行操作。为什么结果是这样呢?看JDK源码能得到答案。Enumeration没有实现Fail Fast操作,如果换成ArrayList,上面的代码可能会出错。《java与模式》迭代子(iterator)介绍了。
有兴趣的,可以看看 <java puzzlers>这本书,上面的应该都出去这书,很经典的
发表评论
-
How to write better OO codes - 同事的总结
2012-04-09 17:17 0怎样写更优秀的面向对象的代码 How to wri ... -
艾宾浩斯记忆曲线
2011-05-16 09:50 1067一、艾宾浩斯记忆规律曲线解释 德国有一位著名的心理学家 ... -
电视剧 仙剑奇侠传3 全集迅雷下载
2011-05-15 10:03 552801thunder://QUFmdHA6Ly9keWdvZDE ... -
关于动物的英语
2010-12-31 11:52 1078birds of feather.一丘之貉 bla ... -
这趟公交的站点
2010-11-02 13:30 933上面是一张Toronto的Subway,某人曾说:l ... -
哈佛耶鲁设网络公开课程
2010-11-02 13:14 1085哈佛大学 部分课程对全球开放,目前首选就是Justice(公 ... -
最后期限中的经典管理名录
2010-08-26 17:19 738优质管理的四大要素: -
JE2010-04月刊摘录
2010-05-07 08:18 8641.了解并下载试用JDebugTool,http://fres ... -
在Google 上搜书的方法(转)
2010-04-13 16:07 1666在搜索框上输入 ... -
javaeye2010年3月刊记录
2010-04-13 08:39 9151. BoneCP 0.6.4发布,高效的Java数据库连接池 ... -
2010年2月刊记录
2010-03-26 10:03 9841.http://www.jeecms.com/http:// ... -
手机(Nokia)查看系统信息(转)
2010-03-26 09:17 2516一、 一般指令 (这个很实用, 我想很多人都知道, 但仍有一部 ... -
资料学习or下载网址
2010-03-25 16:19 1006http://www.uniquesoft.cn/Item/l ... -
WAP
2010-03-07 12:14 1261WAP(Wireless Application Protoc ... -
今天tomcat的猫换了
2010-02-24 12:25 899今天给别人写个测试DEMO,临时找个图片就去http://to ... -
找规律,1,11,21,1211,111221,?这第六个数是什么?
2010-02-05 08:57 4541找规律,1,11,21,1211,111221,?这第六个数是 ... -
2009年12月最新的全国铁路线路图
2010-02-02 23:17 14312009年12月最新的全国铁路线路图 -
JavaEye7月刊记录
2010-01-13 11:41 1023JavaEye7月刊记录 1.jBPM-4.0.GA ... -
10月刊摘录
2009-11-16 15:33 8841.Joda Time是一个强大易 ... -
JE九月刊摘录
2009-10-15 19:04 10421.对于 Java 程序员来说,除 SSH 之外,可能还有另外 ...
相关推荐
《Java Puzzlers Sampler》是由Java领域的权威专家Joshua Bloch和Neal Gafter共同编著的一本书,书中收录了一系列令人困惑、出乎意料的Java编程问题,旨在帮助开发者更好地理解和避免这些潜在的陷阱。书中的...
《JAVA PUZZLERS》是一本深受欢迎的Java编程书籍,旨在揭示编程语言中的微妙陷阱和易犯错误,帮助开发者提升编程技能和理解。这本书以其独特的“谜题”形式,通过一系列精心设计的问题,引导读者探索Java语言的深奥...
本書包含了Java程式語言和核心函式庫中的各種謎題,任何具備使用Java經驗的讀者都可以看得懂,但是書裡有不少謎題的難度頗高,即便是對經驗豐富的Java程式設計師而言,都是一項挑戰,所以如果你解不出來,別覺得難過...
这本书专门探讨了Java编程语言中容易让人迷惑的陷阱和常见误解,通过一系列精心设计的“puzzlers”(谜题)来揭示这些陷阱,并提供了深入的解析,帮助读者提高代码质量,避免潜在的错误。书中涵盖的知识点广泛,涉及...
这本书通过一系列精心设计的编程谜题(即"puzzlers"),帮助读者深入理解Java语言的内在机制和陷阱。源代码是书中各个谜题的实现,对于学习和理解Java的微妙之处非常有帮助。 首先,我们来看"java-puzzlers"这个...
本书深入研究Java编程语言及其核心类为的细微之处,特写95个有关Java或其他类库的陷阱和缺陷的谜题,其中大多数谜题都采用短程序的形式给出。在每个谜题之后都有详细的解惑方案,这些方案在给出那些实际行为与表面上...
Java Puzzlers 是一套经典的Java编程难题集,由Joshua Bloch和Neal Gafter合著,旨在帮助开发者深化对Java语言特性的理解和避免常见的陷阱。这些“puzzlers”通过一系列精心设计的代码示例,展示了在特定条件下可能...
《Java解惑》是一本专为Java程序员设计的书籍,旨在揭示编程中常见的陷阱、误导性和易错的代码片段,帮助读者提升编程技能,避免在实际工作中遇到问题时感到困惑。这本书通过一系列精心设计的“Java谜题”,引导读者...
### Java Puzzlers知识点解析 #### 一、Java Puzzlers概述 《JavaSIG-Puzzlers.pdf》是一本由Joshua Bloch与Neal Gafter共同编写的书籍,该书主要探讨了Java编程语言中的一些非常规问题。这些问题是开发者在日常...
"Puzzlers"在这里指的是书中精心设计的一系列编程谜题,通过这些谜题,开发者可以了解到Java语言中的陷阱和微妙之处。 1. **类型转换与强制转换**:Java中存在自动类型转换和显式强制类型转换,但过度依赖这些转换...
在探讨`java_puzzlers`中的第一个谜题时,我们遇到了一个看似简单却充满陷阱的场景。方法`isOdd`的目标是判断一个整数是否为奇数。原始实现如下: ```java public static boolean isOdd(int i) { return i % 2 == ...
《JAVA解惑》是一本专为Java爱好者设计的书籍,旨在帮助读者解决在学习和使用Java过程中遇到的各种问题。这本书以PDF格式提供,方便电子阅读和保存。在深入探讨Java编程语言的过程中,它覆盖了从基础概念到高级特性...
《Javapuzzler+JAVA解惑 中英双语 完整源代码》是一份集学习与实践于一体的Java编程资源,包含《Java Puzzlers》和《JAVA解惑》两部分,以及对应的完整源代码。这份资料对于深入理解Java语言的特性和陷阱,提升编程...
这本书的标题《Java Puzzlers: Traps, Pitfalls, and Corner Cases》揭示了其内容核心——解决Java编程语言中的陷阱、缺陷和边缘案例。在描述中提到,本书旨在帮助读者对Java编程中看似棘手的问题进行讲解,从而使...
"Kotlin Puzzlers"项目,正如其名,是一次探索Kotlin语言特性和陷阱的有趣之旅,旨在帮助开发者深入理解Kotlin的内在机制,避免潜在的问题。 开源项目"Kotlin Puzzlers"是学习和提升Kotlin编程技巧的一个宝贵资源。...
结合标签"源码"和"工具",我们可以深入理解Java API的设计原理,以及如何避免相关的陷阱。 1. **Java API设计原则**: - Java API的设计应当遵循一致性、简洁性和易用性的原则。然而,一些API可能因为历史原因或...
《JavaPuzzlers》这本书由Josh Bloch和Bob Lee共同编写,是一本深入探讨Java编程语言中各种陷阱、怪癖及未被广泛认知特性的书籍。书中通过一系列精心设计的编程谜题,揭示了Java中那些容易导致错误或令人困惑的行为...
《Java Puzzlers》** - **作者:** Joshua Bloch & Neal Gafter - **主要内容:** 本书通过一系列有趣的编程难题来揭示Java语言中的微妙之处。 - **涵盖知识点:** - Java语言的怪异行为 - 常见陷阱 - 语言特性...
2. 《Java Puzzlers》:通过谜题介绍一些你可能没有注意到的边角料,这本书可以作为趣味读物,也可以帮助读者深入理解 Java 的特性。 3. 《深入 Java 虚拟机》:这本书提供了 Java 虚拟机的详细介绍,帮助读者深入...