在Java序列化中,为什么J表示长,L表示对象?

在Java序列化中,为什么J表示长,L表示对象?,java,oop,serialization,Java,Oop,Serialization,在Java中序列化对象时,字母J表示下一个字节表示长,字母L表示下一个对象,但为什么?为什么不使用O表示对象,L表示长?这些字母的选择肯定是因为冲突。对这种冲突的猜测: C用于char。因此,他们将L用于类 L被选为类。因此,他们用J表示long B被用作字节。因此,他们使用Z表示布尔值 顺便说一下,“L”不是指“对象”,而是指“完全限定类” 也许是因为O与0混淆了?除了“规范就是这样写的”,我会惊讶地看到在I之后出现了一个实际的reasonJ,I是int,所以J会很长。不太清楚他们从哪里得

在Java中序列化对象时,字母J表示下一个字节表示
,字母L表示下一个
对象,但为什么?为什么不使用O表示
对象
,L表示

这些字母的选择肯定是因为冲突。对这种冲突的猜测:

  • C用于char。因此,他们将L用于

  • L被选为。因此,他们用J表示long

  • B被用作字节。因此,他们使用Z表示布尔值


顺便说一下,“L”不是指“对象”,而是指“完全限定类”

也许是因为O与0混淆了?除了“规范就是这样写的”,我会惊讶地看到在I之后出现了一个实际的reasonJ,I是int,所以J会很长。不太清楚他们从哪里得到了L,但这一切都回到了历史的迷雾中,当时计算机是蒸汽驱动的。(顺便说一句,从技术上讲,这个线程可能与“不是一个真正的问题”的标准相冲突,但它还是有点有趣。)此外,为什么每个有效的
.class
文件都必须包含幻数
0xCAFEBABE
?:)我不确定这是否是正确的理由,但这是有道理的(就像他们从拼字包中挑选字母的想法一样)。你有这句话的来源吗,还是只是猜测?是的。这只是猜测而已!如果我找到了消息来源,我会把它放在这里。