Home

Java Enum 分析

枚举的用途 枚举是一中特殊的数据类型, 枚举中的变量是我们预先设定的一组值, 并且该组值是固定,无法增删改的. 我们可以用来记录一些特殊的值, 比如星期几, 东西南北方向, 性别等, 用Enum可以实现单例模式, 用Enum实现单例模式是一种很优雅的方式, 它的优点: 保证是线程安全的 序列化不会破坏用枚举实现的单例 枚举的示例 示例1: package com.myEnum; public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; } 示例2: publ...

Read more

String 源码分析

须知 1.String不属于基本数据类型. 2.String是Immutable(不可变的).String的大部分方法都会返回一个新的String. 3.Java对于String提供了编译期的运算符重载, String对于(+)的实现通过StringBuilder的append()方法. 4.Java默认提供了对于所有类转化为String类的方法, 即都继承了Object的toString()方法. 接口 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { Serializable序列化接口 Comparab...

Read more

Java 基础博文Collections

面向对象 什么是面向对象 面向对象、面向过程 面向对象的三大基本特征 五大基本原则 平台无关性 Java如何实现的平台无关性的 JVM还支持哪些语言(Kotlin、Groovy、JRuby、Jython、Scala) 值传递 值传递、引用传递 为什么说Java中只有值传递 封装、继承、多态 什么是多态 方法重写与重载 Java的继承与实现 Java的继承与组合 构造函数与默认构造函数 类变量、成员变量和局部变量 成员变量和方法作用域 Java基础知识 基本数据类型 7种基本数据类型:整型、浮点型、布尔型、字符型 整型中byte、short、int、long的取值范围 什么是浮点型? 什么是单精度和双精度? 为什么不能用浮点型表示金额? 自动拆装箱 什...

Read more

HashMap源码分析

通过研究高水平的代码, 不断思考 我们才能写出更好的代码, HashMap的高性能表现使得不少人去研究它是如何实现, 以及HashSet也只是保证了一个HashMap, 该文可能会由主体到细节, 不断更新. 如果你对HashMap中的hash算法不太了解, 那么请先去了解一下, 在阅读本文. hashmap的hash算法 本文的解析大部分以注释的方式嵌入了代码中. class Node (构成hashmap的节点) static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; ...

Read more

Java 各种hash算法分析

Hash, 把任意长度的输入, 通过散列算法, 转化为一个定长的值. 散列算法的一个特性:根据同一散列算法算出来的值, 如果输入值是不同的, 那么输出值也不同, 但是根据同一函数算出来的散列值相同, 那么输入值不一定相同.(哈希冲突) 根据散列算法的特性, javadoc中说明了java hashcode的准则: 概括来说就是如果equals()方法返回true, 那么生成的hashcode一定相同, 如果equals()方法返回false, 那么生成的hashcode则可能相同也可能不同.(这也是为什么javadoc上要求, equals()方法和hashcode()方法尽量一起重写的原因) 看起来有点绕口, 再简略一下, hashcode相等是两个实例相等的前提条件. 在O...

Read more