为什么以下列方式初始化此缓冲区?

时间:2017-12-20 14:48:19

标签: java initialization declaration

我可以在javax.crypto.CipherInputStream(第77行)中看到以下初始化

private byte[] ibuffer = new byte['Ȁ'];

Ȁ是什么意思,为什么以这种方式初始化缓冲区?

3 个答案:

答案 0 :(得分:2)

char转换为int。值为512

答案 1 :(得分:1)

从这个源代码:javax/crypto/CipherInputStream.java,这个数组用

初始化
 /* the buffer holding data that have been read in from the
  underlying stream, but have not been processed by the cipher
  engine. the size 512 bytes is somewhat randomly chosen */

 private byte[] ibuffer = new byte[512];

512是字符'Ȁ'的整数值,因此它是相同的初始化。

尝试:System.out.println((char) 512);

答案 2 :(得分:0)

这是反编译器的问题,它们只查看字节码并尝试重建源。

如果您查看javax.crypto.CipherInputStream (Line 77)中的原始来源,您会看到该行最初是

 private byte[] ibuffer = new byte[512];

'Ȁ'属于char类型,如果将其强制转换为int,则其值为512.您的反编译器重建了一种可能的方法来生成该字节码 - 但是在这种情况下,没有理智的程序员会这样写(除非打高尔夫球或故意混淆代码)。