- 浏览: 467752 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- java基础 (59)
- struts (8)
- spring (8)
- 数据库 (8)
- java 网络编程 (29)
- hibernate (3)
- JavaScript (10)
- 日志管理 (2)
- jsp (4)
- servlet (7)
- xml (4)
- ajax (2)
- web service (4)
- 算法与数据结构 (13)
- java 反射机制 (11)
- java 泛型 (3)
- java I/O (8)
- java 线程 (12)
- JavaEE (6)
- java解惑 (33)
- 工具 (5)
- MyEclipse编程实践 (1)
- OSGI (2)
- 设计模式 (9)
- 正则表达式 (0)
- EJB (3)
- Ubuntu linux (6)
- Android (1)
- web前端 (2)
- 找工作 (1)
- SCA (1)
- maven (1)
- 缓存 (1)
- json (1)
- javamail (1)
- 工作笔记 (2)
最新评论
-
霜花似雪:
博主可以分享一下源码吗?
使用maven构建web项目实例 -
王庆波-行:
很好的demo!
memcache使用实例 -
surpassno:
大写的牛逼
java可视化显示内存使用情况 -
zhulin0504:
怎么访问NetEcho.html页面呀???
applet与servlet的网络通信 -
springdata:
java多线程实例demo源代码下载:http://www.z ...
java多线程例子
谜题56:大问题
你可能认为这个程序会打印出555000。可结果为0。
因为BigInteger的实例是不可变的。String、BigInteger以及包装类也是如此。不能修改它们的值。对这些类型的操作将返回新的实例。
为了得到预想结果,可修改如下:
谜题57:名字里有什么
这里的bug在于Name违反了hashCode约定。无论何时,只要你覆写了equals方法,你就必须同时覆盖hashCode方法。
该集合是根据实例的散列值来选择散列位置的,这个散列值是通过实例的hashCode方法计算出来的。
谜题58:产生它的散列码
下面程序吸取前一个程序的教训,重载了hashCode方法,它输出什么呢?
输出还是false。 注意:在本题中,覆盖了hashCode方法,但没有覆盖equals方法。该类声明的equals方法的参数类型是Name,而不是Object。
HashSet类是使用equals(Object)方法来测试元素的相等性的。
谜题59:差是什么
连续两个元素之差是111,以此类推,其他之差为222。。。。666,777。但是请注意012是一个八进制数。结果输出为27 = 1(0)+14(012与其他元素的差,请注意有正负两个方向)+12(111。。。。666,以及负的)。以0开头的整型字面常量将被解释为八进制数值。
import java.math.BigInteger; public class BigProblem { public static void main(String[] args) { BigInteger i = new BigInteger("5000"); BigInteger j = new BigInteger("50000"); BigInteger k = new BigInteger("500000"); BigInteger total = BigInteger.ZERO; total.add(i); total.add(j); total.add(k); System.out.println(total); //0?? } }
你可能认为这个程序会打印出555000。可结果为0。
因为BigInteger的实例是不可变的。String、BigInteger以及包装类也是如此。不能修改它们的值。对这些类型的操作将返回新的实例。
为了得到预想结果,可修改如下:
total = total.add(i); total = total.add(j); total = total.add(k);
谜题57:名字里有什么
import java.util.HashSet; import java.util.Set; public class Name { private final String first, last; public static void main(String[] args) { Set<Name> s = new HashSet<Name>(); s.add(new Name("Mickey","Mouse")); System.out.println(s.contains(new Name("Mickey","Mouse"))); } public Name(String first, String last) { this.first = first; this.last = last; } public boolean equals(Object o) { if (!(o instanceof Name)) return false; Name n = (Name) o; return n.first.equals(first) && n.last.equals(last); } }
Name a = new Name("Mickey","Mouse"); Name b = new Name("Mickey","Mouse"); System.out.println(a.equals(b)); //true,如果没有重载equals函数,结果为false System.out.println(a==b);//false
这里的bug在于Name违反了hashCode约定。无论何时,只要你覆写了equals方法,你就必须同时覆盖hashCode方法。
该集合是根据实例的散列值来选择散列位置的,这个散列值是通过实例的hashCode方法计算出来的。
谜题58:产生它的散列码
下面程序吸取前一个程序的教训,重载了hashCode方法,它输出什么呢?
import java.util.HashSet; import java.util.Set; public class Name { private final String first, last; public static void main(String[] args) { Set<Name> s = new HashSet<Name>(); s.add(new Name("Mickey","Mouse")); System.out.println(s.contains(new Name("Mickey","Mouse"))); } public Name(String first, String last) { this.first = first; this.last = last; } public boolean equals(Name n) { return n.first.equals(first) && n.last.equals(last); } public int hashCode(){ return 31*first.hashCode()+last.hashCode(); //只要重载即可, } }
输出还是false。 注意:在本题中,覆盖了hashCode方法,但没有覆盖equals方法。该类声明的equals方法的参数类型是Name,而不是Object。
HashSet类是使用equals(Object)方法来测试元素的相等性的。
谜题59:差是什么
import java.util.HashSet; import java.util.Set; public class Difference { public static void main(String[] args) { int vals[] = {789,678,567,456,345,234,123,012}; for(int k = 0 ;k<vals.length;k++) System.out.println(vals[k]); Set<Integer> s = new HashSet<Integer>(); for(int i =0 ;i<vals.length;i++){ for(int j = 0;j<vals.length;j++){ s.add(vals[i]-vals[j]); } } System.out.println(s.size()); } }
连续两个元素之差是111,以此类推,其他之差为222。。。。666,777。但是请注意012是一个八进制数。结果输出为27 = 1(0)+14(012与其他元素的差,请注意有正负两个方向)+12(111。。。。666,以及负的)。以0开头的整型字面常量将被解释为八进制数值。
发表评论
-
数据库及struts面试题
2011-06-22 11:07 1060数据库部分 Q: What is SQL? ... -
EJB面试题
2011-06-22 10:54 1125Q: What are the different kinds ... -
java中的servlet面试题
2011-06-22 10:43 1110Q: Explain the life cycle metho ... -
java中JSP的面试题
2011-06-22 10:22 1544Q: What is a output comment? (可 ... -
java中的集合面试题
2011-06-22 10:12 721Q: What is the Collections API? ... -
彻底搞清楚java的内部类
2011-06-15 10:47 1507内部类允许在一个类中 ... -
细说java(java中的浮点数十六进制表示)
2011-06-12 16:48 3566java中浮点数不能用八进制表示,但可以用十六进制表示,只能用 ... -
SCJP试题
2011-06-09 16:14 1179package scjp; public class T ... -
java面试题解惑 之 继承、多态、重载、重写
2011-06-03 09:36 1301继承、多态、重载、重写 继承 java中有三种类:类,抽象类, ... -
java面试题解惑 之 多线程
2011-06-02 17:24 9921,多线程 线程或者说 ... -
java面试题解惑 之变量初始顺序,变量覆盖,字符串池,final,finally区别
2011-06-02 16:26 7991,变量初始化顺序 package com.qdu.sun; ... -
java解惑(Map的使用,静态导入方法,线程中断interrupted与线程死锁)
2011-05-17 12:38 1396Map的使用 package other; import ... -
java 继承的一个问题(想不明白)
2011-04-13 17:03 916java中的继承问题,以为是学会了java,结果最简单的一个j ... -
java解惑(谜题76。。)
2011-03-09 11:22 1221谜题76:乒乓public class PingPong { ... -
java解惑(谜题60,65)
2011-03-08 15:52 919一行以毙之 1,编写一个 ... -
java解惑(谜题66。。。)
2011-02-28 20:54 956谜题66:一件私事 class Base{ public ... -
java解惑(谜题61。。。)
2011-02-28 20:17 916谜题61:日期游戏 import java.util.Cal ... -
java解惑(谜题49。。)
2011-02-27 10:52 954谜题49:比生命更大 import java.util.Cal ... -
java解惑(谜题41到谜题)
2011-02-27 10:18 922谜题41:域和流 下面的 ... -
谜题36-谜题
2011-02-25 10:55 902谜题36:优柔寡断 public ...
相关推荐
总结,Java编程中的谜题涵盖了许多方面,从基础语法到高级特性,每一个谜题都是提升编程技巧的机会。通过深入学习和实践,你可以逐一解开这些谜题,成为一名更优秀的Java开发者。不断探索和理解Java的内在机制,将使...
我整理出来的Java解惑/谜题的CHM版本,包括目录、全文搜索和收藏夹。比目前Word/PDF版本的多个目录,比TXT版本的多一些格式。-- 如果不能打开CHM,请按下面方法解决:-- 右键点击chm文档,查看属性,可以看到...
Java Puzzlers是由Java之父James Gosling等人共同创作的一系列挑战性问题,这些问题通常会在代码中引发非预期的行为,而这些行为对于有经验的开发者来说可能也是出乎意料的。 Java是一种广泛使用的面向对象的编程...
### JAVA解惑中的关键知识点解析 #### 谜题1:奇数性的判断 在《JAVA解惑》一书中,作者通过一系列实例介绍了Java编程语言中的一些不易掌握的知识点。其中一个例子是关于如何正确判断一个整数是否为奇数。 **原始...
java 解惑 java 解惑 java 解惑 java 解惑 java 解惑 java 解惑
在《Java解惑》中,初学者可以学习到以下关键知识点: 1. **基础语法**:了解Java的基本数据类型(如整型、浮点型、字符型、布尔型),变量声明,常量定义,运算符,流程控制(如if语句、switch语句、循环结构),...
文档《java解惑 PDF版》中列举了95个这样的谜题,每个谜题都旨在帮助开发者理解并纠正一些常见的错误理解。以下是根据提供的部分内容解析的几个相关知识点。 ### 表达式谜题与取余操作符(%)的行为 在Java中,...
本书深入研究Java编程语言及其核心类为的细微之处,特写95个有关Java或其他类库的陷阱和缺陷的谜题,其中大多数谜题都采用短程序的形式给出。在每个谜题之后都有详细的解惑方案,这些方案在给出那些实际行为与表面上...
Java谜题8——更多的库谜题 谜题76:乒乓 谜题77:搞乱锁的妖怪 谜题78:反射的污染 谜题79:这是狗的生活 谜题80:更深层的反射 谜题81:烧焦(字符化)到无法识别 谜题82:啤酒爆炸 谜题83:诵读困难者的...
Java PUZZLE Java 解惑 Java PUZZLE Java 解惑 Java PUZZLE Java 解惑Java PUZZLE Java 解惑 Java PUZZLE Java 解惑 Java PUZZLE Java 解惑
9. **Java教程**:除了解惑,本书还适合作为Java初学者的教程,从基础语法到高级特性,全面介绍Java编程。 通过阅读《Java解惑中文版》,读者不仅可以解答编程中遇到的困惑,还能系统提升自己的Java技术水平,编写...
"JAVA解惑"的主题针对的是Java学习过程中遇到的一些常见问题和难点,旨在帮助开发者深入理解和解决这些问题。以下是基于这个主题和描述可能涵盖的一些关键知识点: 1. **Java基础**:这可能包括变量、数据类型、...
### Java解惑 书籍类 谜题 #### Java谜题1——表达式谜题 **谜题1:奇数性** 本节讨论了一个看似简单的Java方法,旨在判断一个整数是否为奇数: ```java public static boolean isOdd(int i) { return i % 2 ==...
Java编程语言是世界上最流行的开发平台之一,广泛应用于企业级应用、移动应用(尤其是Android系统)、大数据处理、云计算等领域。这份“Java解惑.pdf”文档很可能包含了解决Java开发者在编程过程中遇到的常见问题和...
《Java解惑》 布洛克 著;陈昊鹏 译 扫描清晰带目录,仅供参阅,请支持正版
"java解惑" PDF版本
该书特写了95个有关Java或其类库的陷阱和缺陷的谜题,其中大多数谜题都采用了短程序的方式,这些程序的行为与其看似的大相径庭。在每个谜题之后都给出了详细的解惑方案,这些解惑方案超越了对程序行为的简单解释,向...