摘要: P283)不可变String String类中看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。最初的String对象则丝毫未动。每当把String对象作为方法参数时,都会复制一份引用,而该引用所指的对象其实一直待在单一的物理位置上。 不可变性会 阅读全文
posted @ 2017-06-21 17:36 TooLateToLearn! 阅读(94) 评论(0) 推荐(0) 编辑
摘要: P258)重抛异常会把异常抛给上一级环境中的异常处理程序,同一个try块的后续catch子句将被忽略。此外,异常对象的所有信息都得以保持。 如果只是把当前异常对象重新抛出,那么printStackTrace()方法显示的将原来的异常抛出点的调用栈信息,而并非重新抛出点的信息。要更新这个信息,可以调用 阅读全文
posted @ 2017-06-21 17:20 TooLateToLearn! 阅读(177) 评论(0) 推荐(1) 编辑
摘要: P220)你也可以直接使用Arrays.asList()的输出,将其当作List,但是在这种情况下,其底层表示的时数组,因此不能调整尺寸。 P222)如果存储顺序很重要,那么可以使用TreeSet(红-黑树),它按照比较结果的升序保存对象;或者使用LinkedHashSet,它按照被添加的顺序保存对 阅读全文
posted @ 2017-06-20 22:25 TooLateToLearn! 阅读(140) 评论(0) 推荐(0) 编辑
摘要: P191)如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须具体的指明这个对象的类型:OuterClassName.InnerClassName。 P191)内部类能访问其外围对象的所有成员,而不需要任何特殊条件。此外,内部类还拥有其外围类的所有元素的访问权。 P192)内部类的 阅读全文
posted @ 2017-06-20 22:24 TooLateToLearn! 阅读(168) 评论(0) 推荐(0) 编辑
摘要: P96)总结一下对象的创建过程,假设有个名为Dog的类: 在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制。 调用基类构造器。这个步骤会不断的反复递归下去,首先是构造这种层次结构的根,然后是下一层导出类,等等,直到最低层的导出类。 按声明顺序调用成员的初始化方法。 调用导出类构造器的主体 阅读全文
posted @ 2017-06-20 22:17 TooLateToLearn! 阅读(370) 评论(0) 推荐(0) 编辑