Home
malinkang
Cancel

《Java编程思想》第2章一切都是对象

2.2 必须由你创建所有对象 2.2.1 存储到什么地方 2.2.2 特例:基本类型 在程序设计中经常用到一系列类型,它们需要特殊对待。可以把它们想象成“基本”类型。之所以特殊对待,是因为new将对象存储在“堆”里,故用new创建一个对象,特别是小的、简单的变量,往往不是很有效。因此,对于这些类型,Java采取与C和C++相同的方法。也就是说,不用new来创建变量,而是创建一个并非是引...

《Effective Java》第10章异常

《Effective Java》第9章通用程序设计

第57条:将局部变量的作用域最小化 要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明。 循环中提供了特殊的机会来将变量的作用域最小化。for循环,都允许声明循环变量(loop variable),它们的作用域被限定在正好需要的范围之内。因此,如果在循环终止之后不再需要循环变量的内容,for循环就优于while循环。 Iterator<Element> i...

《Effective Java》第8章方法

第49条:检查参数的有效性 对于公有的方法,要用Javadoc的@throws标签在文档中说明违反参数值会抛出的异常。一旦在文档中记录了对于方法参数的限制,并且记录了一旦违反这些限制将要抛出的异常,强加这些限制就是非常简单的事情了。 /** * Returns a {@code BigInteger} whose value is {@code this mod m}. Th...

《Effective Java》第7章lambda表达式和流

第42条:Lambda优先于匿名类 Collections.sort(words, new Comparator<String>() { @Override public int compare(String s1, String s2) { return Integer.compare(s1.length(),s2.length()); ...

《Effective Java》第6章枚举和注解

第34条:用enum代替int常量 在编程语言中还没有引入枚举类型之前,表示枚举类型的常量模式是声明一组具名的int常量,每个类型成员一个常量: public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMI...

《Effective Java》第5章泛型

第26条:请不要在新代码中使用原生态类型 声明中具有一个或者多个类型参数(type parameter)的类或者接口就是泛型类或者接口。泛型类和接口统称为泛型(generic type)。 每种泛型定义一组参数化的类型(parameterized type),构成格式为:先是类或者接口的名称,接着用尖括号(<>)把对应于泛型形式类型参数的实际类型参数列表括起来。 每个泛型都...

《Effective Java》第4章类和接口

第15条:使类和成员的可访问性最小化 区分一个组件设计得好不好,唯一重要的因素在于,它对于外部的其他组件而言,是否隐藏了其内部数据和其他实现细节。 设计良好的组件会隐藏所有的实现细节, 把 API与实现清晰地隔离开来。 然后,组件之间只通过API进行通信,一个模块不需要知道其他模块的内部工作情况。 这个概念被称为信息隐藏( info1mation hiding)或封装( encapsula...

《Effective Java》第3章对于所有对象都通用的方法

第10条:覆盖equals时请遵守通用约定 在覆盖equals方法的时候,你必须要遵守它的通用约定。 自反性(reflexive)。对于任何非null的引用值x,x.equals(x)必须返回true。 对称性(symmetric)。对于任何非null的引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)必须返回true。 传递性(transi...

《Effective Java》第2章创建和销毁对象

第1条:考虑用静态工厂方法替代构造器 创建类实例最常用的方法就是提供一个公有的构造器。此外,还可以提供一个公有的静态工厂方法(static factory method),它只是一个返回类的实例的静态方法。 //来自Boolean的简单示例 //这个方法将boolean基本类型值转换成了一个Boolean对象引用: public static Boolean valueOf(boolea...