我对这个问题感到困惑。平台在win7 java8上。
示例代码:
String encryptedData = "0019ZfGO0nefTb2kIuHO0M3hGO09ZfGF";
Base64.Decoder decoder = Base64.getDecoder();
byte[] dataByte = decoder.decode(encryptedData);
System.out.println(dataByte);
dataByte = decoder.decode(encryptedData);
System.out.println(dataByte);
输出:
[B@15db9742
[B@6d06d69c
确切的输入得到了不同的结果。 不知道是否还有清除状态并且每次都能使结果保持一致吗?
谢谢!
答案 0 :(得分:1)
在Java中,数组不会覆盖toString()
,因此如果您尝试直接打印一个数组,则会获得" className + @ + hashCode
的十六进制数组",由Object.toString()
定义
注意:只需通过引用变量打印数组意味着您正在调用该数组对象的toString()
方法。
由于decoder.decode(encryptedData)
每次都会返回new byte[]
,因此当您打印参考变量时,它会给出不同的值。
例如:System.out.println(dataByte);//output:[B@15db9742
您可以使用标准库函数来打印数组的包含。有很多方法可以实现这一目标。下面是一些例子:
System.out.println(Arrays.toString(dataByte));
System.out.println(dataByte.toList());