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;
}
}