易截截图软件、单文件、免安装、纯绿色、仅160KB

Java谜题6——库谜题


 
谜题56:大问题 | 谜题57:名字里有什么? | 谜题58:产生它的散列码 | 谜题59:什么是差? | 谜题60:一行的方法 | 谜题61:日期游戏 | 谜题62:名字游戏 | 
谜题63:更多同样的问题 | 谜题64:按余数编组 | 谜题65:一种疑似排序的惊人传奇
    通过上面的链接大家可以在上面的的为网站上看到《Java Puzzlers》的详细文章,在此仅将学习的重点做下总结:
关于库:
谜题56
解释:BigInteger实例是不可变的。String、BigDecimal以及包装器类型:Integer、Long、Short、Byte、Character、Boolean、Float和Double也是如此,
      你不能修改它们的值。我们不能修改现有实例的值,对这些类型的操作将返回新的实例。为了在一个包含对不可变对象引用的变量上执行计算,我们
      需要将计算的结果赋值给该变量。
      方法如下: BigInteger fiveThousand = new BigInteger("5000");
教训:不要被误导,认为不可变类型是可变的。这是一个在刚入门的Java程序员中很常见的错误。公正地说,
Java不可变类型的某些方法名促使我们走上了歧途。像add、subtract和negate之类的名字似乎是在暗
示这些方法将修改它们所调用的实例。也许plus、minus和negation才是更好的名字。
谜题57
解释: 使用set方法时,注意,如果定义的类覆写了equals()方法时,就一定要覆写hashcode()方法,因为每次
  使用set存储实例或是调用,都需要hashcode方法比较数据。
教训:当你覆写equals方法时,一定要记着覆写hashCode方法。更一般地讲,当你在覆写一个方法时,如果它具
有一个通用的约定,那么你一定要遵守它。对于大多数在Object中声明的非final的方法,都需要注意这一
点[EJ Chapter 3]。不采用这项建议就会导致任意的、不确定的行为。
谜题58
 解释:这个程序的缺陷与谜题57中的缺陷很相似,在谜题57中,Name覆写了equals方法,但是没有覆写hashCode方法;而在本谜题中,Name覆写了hashCode方
       法,但是没有覆写equals方法。这并不是说Name没有声明一个equals方法,它确实声明了,但是那是个错误的声明。Name类声明了一个参数类型是Name
 &n


相关文档:

Java Web 第10天 EL和JSTL 2

四、JSTL的用法
在平常的使用中我们一般利用
EL
控制变量以及变量的输出,利用
JSTL
控制算术逻辑。
JSTL
是一种标记。
1.      

JSTL
的导入
                    &nb ......

Java 直接选择排序

      直接选择排序算法:从待排序的数据元素集合中选取最小的元素放到原始数据的第一个元素的位置上。然后不包括第一个元素的数据元素集合中找到最小的元素放到此集合中,依次类推,即可完成排序。
算法实现如下:
/**
* 直接选择排序
* @param a 用于排序的数组
* */
public void ......

java拷贝对象

这是我个人的理解,加上以前看的一些帖子,有不对的地方,请高人指点。
1.作为java参数传递给一个函数的对象,除了很简单的如int或者boolean等简单的以外,传递的都是这个对象的引用。
当在接收函数中改变这个对象的时候,原来的对象即被改变。
2.在初始化一个对象的时候,有时候我们希望用一个已经存在的对象来给另外一 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号