package com.song.source.java;public class CharacterDemo {private final char value;public CharacterDemo(char value) {this.value = value;}/** * 字符缓存 */ private static class CharacterCache {private CharacterCache(){}/** * 声明缓存的大小 */ static final CharacterDemo cache[] = new CharacterDemo[127 + 1];/** * 类加载时,缓存字符数据 */ static {for (int i = 0; i < cache.length; i++)cache[i] = new CharacterDemo((char)i);}}/** * 如果字符小于127,则取缓存中对应的数据 * @param c * @return */ public static CharacterDemo valueOf(char c){if(c <= 127){return CharacterCache.cache[(int)c];}return new CharacterDemo(c);}/** * 比较两个字符的大小,实际就是做差 * @param x * @param y * @return */ public static int compare(char x,char y){return x - y;}/** * 将一个字符转变成字符串 * @return */ public String toString(){char buf[] = {
value};return String.valueOf(buf);}/** * 将一个字符转变成字符串 * @param c * @return */ public static String toString(char c){return String.valueOf(c);}/** * 判断与传入的字符是否相等 * @param anObject * @return */ public boolean equals(Object anObject){if(anObject instanceof CharacterDemo){return value == ((CharacterDemo)anObject).charValue();}return false;}/** * 返回char的字符 * @return */ public char charValue(){return value;}}