04-do-you-know-class-name
4. 你真的了解java class name吗?
在面向对象的世界,Class是java的基础。java.lang.Class实际上是继承自java.lang.Object。
class有一个方法叫做getName,该方法会返回(class, interface, array class, primitive type,或者 void)的Class名字。
如果你经常调试JVM的话,会看到下面这样奇怪的内容:
jcmd 1234 GC.class_histogram
这些奇怪的内容都是class name,下面我们就来看看他们都表示什么含义。
class name其实分为三类。
primitive类型或者void
如果类对象是primitive类型或者void,那么他们的class name就是相对应的关键词或者void。
输出结果:
引用类型
如果是引用类型,则会返回该类的class名字:
输出结果:
Array类型
Array类型就有点复杂,根据Array的层级关系,会在class name之前添加[,有多少级Array就添加多少个[。
同时相应的类型会转换为相应的编码:
元素类型
编码
boolean
Z
byte
B
char
C
class or interface
Lclassname;
double
D
float
F
int
I
long
J
short
S
我们举个例子:
输出结果:
总结
好了,上面的jcmd的输出结果是不是可以理解了?
本文的例子https://github.com/ddean2009/learn-java-base-9-to-20
欢迎关注我的公众号:程序那些事,更多精彩等着您! 更多内容请访问 www.flydean.com
最后更新于
这有帮助吗?