Java
编码兔
小城市的程序员,小生活过得还算滋润...
展开
-
EffectiveJava(笔记七) 通用程序设计
45. 将局部变量的作用域最小化将局部变量的作用最小化, 可以增强代码的可读性和可维护性, 并降低出错的可能性要使局部变量的作用域最小化, 最有力的方法就是在第一次使用它的地方声明几乎每个局部变量的声明都应该包含一个初始化表达式, 如果还没有足够的信息来对一个变量进行有意义的初始化, 就应该推迟这个声明, 直到可以初始化为止46. for-each循环优先于传统的for循环利用for-each原创 2017-07-10 15:03:37 · 338 阅读 · 0 评论 -
EffectiveJava(笔记五) 枚举和注解
30. 用enum代替int常量枚举类型(enum type)是指由一组固定的常量组成合法值的类型, 在编程语言中还没有引入枚举类型之前, 表示枚举类型的床用模式是声明一组具有名的int常量public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public static final int原创 2017-07-08 21:45:13 · 317 阅读 · 0 评论 -
EffectiveJava(笔记十) 序列化
序列化对象序列化API, 它提供了一个框架, 用来将对象编码成字节流, 并从字节流编码中重新构建对象, “将一个对象编码成一个字节流”, 称作将该对象序列化, 相反的处理过程被称作反序列化, 一旦对象被序列化后, 它的编码就可以从一台正在运行的虚拟机被传递到另一台虚拟机上, 或者被存储到磁盘上, 提供以后反序列化使用, 序列化技术为远程通信提供了标准的线路级对象表示法, 也为javaBeans组件结原创 2017-07-14 11:07:44 · 309 阅读 · 0 评论 -
EffectiveJava(笔记四) 泛型
23. 请不要再新代码中使用原生态类型虽然不应该再新代码中使用像List这样的原生态类型, 使用参数化的类型以允许插入任意对象, 如List, 原生态类型List和参数化的类型List, 前者逃避了泛型检查, 后者则明确告知编译器, 它能够持有任意类型的对象24. 消除非受检警告如果无法消除警告, 同时可以证明引起警告的代码是类型安全的, 可以用一个@SuppressWarnings(“unchec原创 2017-07-03 16:52:12 · 266 阅读 · 0 评论 -
EffectiveJava(笔记九) 并发
66. 同步访问共享的可变数据关键字synchronized可以保证在同一时刻, 只有一个线程可以执行某一个方法, 或者某一个代码块, 为了在线程之间进行可靠的通信, 也为了互斥访问, 同步是必要的, 多个线程共享可变数据的时候, 每个读或者写数据的线程都必须执行同步, 未能同步共享可变数据会造成程序的活性失败和安全性失败67. 避免过渡同步第66条告诫我们缺少同步的危险性, 本条目则关注相反的问题原创 2017-07-12 16:29:20 · 297 阅读 · 0 评论 -
EffectiveJava笔记(三) 类和接口
13. 使类和成员的可访问性最小化对于成员(域 方法 嵌套类和嵌套接口)有四种可能的访问级别, 下面按照可访问性递增顺序罗列出来:私有的(private): 只有在声明该成员的顶层类内部才可以访问这个成员包级私有的(package-private): 声明该成员的包内部的任何类都可以访问这个成员, 从技术上讲, 它被称为”缺省访问级别”, 如果没有为成员指定访问修饰符, 就采用这个访问级别受保原创 2017-07-03 13:58:44 · 276 阅读 · 0 评论 -
EffectiveJava笔记(二) 对于所有对象都通用的方法
8. 覆盖equals时请遵守通用约定类的每个实例本质上都是唯一的不关心类是否提供了”逻辑相等”的测试功能超类已经覆盖了equals, 从超类继承过来的行为对子类也是合适的类是私有的或者包级私有的, 可以确定它的equals方法永远不会被调用程序员在利用equals方法来比较值对象的引用时, 希望知道它们在逻辑上是否相等, 而不是想了解它们是否指向同一个对象, 为了满足程序员的要求, 不仅原创 2017-07-01 16:43:11 · 369 阅读 · 0 评论 -
EffectiveJava笔记(一) 创建和销毁对象
1. 考虑用静态工厂方法代替构造器构造器:public Boolean(boolean value) { this.value = value;}静态工厂方法:public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE;}优点:静态工厂方法与构造器不同的第一大优势在于,原创 2017-07-01 14:41:12 · 308 阅读 · 0 评论 -
EffectiveJava(笔记八) 异常
57. 只针对异常的情况才使用异常try{ int i = 0; while(true) range[i++].climb();} catch(ArrayIndexOutOfBoundsException e) {}这段代码有什么作用? 看起来根本不明显, 这正是它没有真实被使用的原因, 这个循环企图访问数组边界之外的第一个数组元素时, 用抛出、 捕获、 忽略ArrayInde原创 2017-07-10 15:48:00 · 272 阅读 · 0 评论 -
EffectiveJava(笔记六) 方法
38. 检查参数的有效性就是做参数为null时的处理39. 必要时进行保护性拷贝就是不引用传递的参数, 而是拷贝一份去使用, 如: public void test(Integer value) { Integer valueCopy = Integer.valueOf(value); }40. 谨慎设计方法签名谨慎地选择方法的名称: 方法的名称应该始终遵循原创 2017-07-09 21:23:16 · 349 阅读 · 0 评论