JDK,JRE和JVM之间的区别和联系

摘要: JDK(Java Development ToolKit)是指Java开发工具包,包括JRE以及一些java开发工具和一些类库 JRE(Java Runtime Environment)是指Java运行环境,包括JVM和一些类库 JVM(Java Virtual Machine)是指Java虚拟机, 阅读全文
posted @ 2019-03-14 21:39 evanxwj 阅读(94) 评论(0) 推荐(0) 编辑

覆盖equals时总要覆盖hashCode

摘要: Object条约规定:相等的对象必须具有相同的散列码hashCode 假如将只覆盖equals方法,没覆盖hashCode方法的类用于HashMap中,将会出现问题,会出现get()方法返回时不是同一个对象 这就相当于将对象put进一个散列桶,却在另一个散列桶get这个对象,就算刚好是put和get 阅读全文
posted @ 2017-10-18 20:19 evanxwj 阅读(157) 评论(0) 推荐(0) 编辑

使可变性最小化

摘要: 使类不可变的条件,如String 1. 不要提供任何改变对象状态的方法setter 2. 保证类不会被扩展 3. 确保所有的域都是final的 4. 确保所有的域都是私有的 5. 确保客户端无法访问可变对象的引用 不可变类的特点: 1. 不可变类比较简单 2. 不可变类本身就是线程安全的 3. 无需 阅读全文
posted @ 2017-10-18 19:29 evanxwj 阅读(222) 评论(0) 推荐(0) 编辑

使类和成员的可访问性最小化

摘要: 信息隐藏的概念:模块之间只通过API交互,互相不知道内部工作状况 JAVA提供用于信息隐藏的机制:访问控制 第一规则:尽可能使每个类或类成员不被外界访问 四种可能的访问级别: 1. 私有的 private 2. 包级私有的(缺省) 3. 受保护的 protected 4. 公有的 public 对访 阅读全文
posted @ 2017-10-17 10:29 evanxwj 阅读(116) 评论(0) 推荐(0) 编辑

通过私有构造器强化不可实例化的能力

摘要: 在一些作为工具的类中,所有的方法都是静态的,那么此时这个类是不需要创建新的实例的(如java.lang.math) 由于如果类在不显式提供构造器的时候,编译器会自动提供一个公有的、无参的缺省构造器,所以我们应该去显式地提供一个私有的构造器,这样它就不能实例化了。 阅读全文
posted @ 2017-10-15 10:34 evanxwj 阅读(117) 评论(0) 推荐(0) 编辑

用枚举类型实现Singleton属性是更好的选择

摘要: 实现Singleton方式大概有三种 前两种,把构造器私有,导出公有静态成员 1. 公有静态成员是一个final域 需要考虑反射攻击问题 2. 公有静态成员是一个静态工厂方法 需要考虑序列化的问题,因为仅仅在声明上加上"implements Serializable"是不够的。必须声明所有实例域都是 阅读全文
posted @ 2017-10-15 10:13 evanxwj 阅读(204) 评论(0) 推荐(0) 编辑

遇到多个构造器参数时要考虑使用构建器

摘要: Effecitve Java阅读 当一个类的域很多的时候,一般会采用以下的方法创建类 1. 重叠构造器方式一般创建构造器会使用重叠构造器的方式,即首先创建一个只有必要参数的构造器,然后第二个构造器有一个可选参数,第三个构造器有两个可选参数,依此类推,最后一个构造器包含所有的可选参数。 这种方法虽然可 阅读全文
posted @ 2017-10-14 11:55 evanxwj 阅读(285) 评论(0) 推荐(0) 编辑

考虑用静态工厂方法代替构造器

摘要: 阅读Effective java 静态工厂方法的简介 在创建一个类的时候,除了使用公有的构造器,还可以使用公有的静态工厂方法。 Boolean的valueOf方法就是这样的一个例子: public static Boolean valueOf(boolean b) { return (b ? TRU 阅读全文
posted @ 2017-10-14 10:29 evanxwj 阅读(175) 评论(0) 推荐(0) 编辑

对KMP算法的理解

摘要: KMP算法实现的功能是给定两个字符串T和P,长度分别为n和m,判断P是否在T中出现,如果出现,则返回出现的位置。 在开始之前,首先要理解前缀和后缀这两个概念,前缀指除了最后一个字符以外,一个字符串的全部头部组合;后缀指除了第一个字符以外,一个字符串的全部尾部组合。所以只有一个字符的字符串是没有前缀后 阅读全文
posted @ 2017-09-08 14:42 evanxwj 阅读(122) 评论(0) 推荐(0) 编辑