0009JDK源码分析之拓展字符集

Posted Java框架源码分析

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0009JDK源码分析之拓展字符集相关的知识,希望对你有一定的参考价值。

本文将介绍char的包装类Character中的字符常量池、字符集以及如何拓展字符集。

本文大纲:

       一、字符常量池

       二、Character.Subset

       三、拓展字符集

一、字符常量池

char的包装类Character中也实现了常量池,缓存了128个数字字符。Character.valueOf(char c)调用此方法创建Character对象会使用字符常量池中的对象,节省资源。

【0009】JDK源码分析之拓展字符集

二、Character.Subset

SubsetCharacter类的内部类,是字符集的超类,UnicodeBlock也是Character的内部类,继承了Subset类,提供了非常丰富的字符集。Subset类实现如下:

【0009】JDK源码分析之拓展字符集

UnicodeBlock类定义的字符集(只是一部分):

三、拓展字符集

Character中的UnicodeBlock已经定义了十分丰富的字符集,一般情况下,客户端不需要在重新定义了,如果真的如要拓展一些字符集,也很方便,继承Character.Subset类,定义个性化的字符集。比如图形中的InputSubset类就拓展了字符集,部分代码如下:

四、总结

String字符串在开发中的使用频率会远远高于字符Character,但是有些场景还是相当有用的,创建Character对象时调用valueOf()方法会使用字符池中预先创建好的实例。其次,Character类提供了大量操作字符的方法,比如:判断字符是否是数字、字母,转换大小写等等。如果你要操作字符,你需要的可能都在这里了,不需要额外开发代码实现。

感谢您的阅读,谢谢!

以上是关于0009JDK源码分析之拓展字符集的主要内容,如果未能解决你的问题,请参考以下文章

JDK1.8源码分析之HashMap

JDK 源码分析之 String 相关

JDK1.8 源码分析之HashMap

JDK1.8源码分析之TreeMap

JDK1.8源码分析02之阅读源码顺序

源码阅读系列JDK 8 ConcurrentHashMap 源码分析之 由transfer引发的bug