RandomStringUtils.random Web应用程序中的奇怪行为

时间:2016-06-30 10:23:51

标签: java arrays random tostring

我使用RandomStringUtils.random生成一个随机密码。在应用程序运行时生成密码似乎有一种奇怪的行为,它始终使用以下结构创建密码:[C@1c3f05e5, [C@2b15e4de, [C@18c628b6。它总是重复三个第一个字符。我生成密码的代码是:

char[] password = RandomStringUtils.random(10, 0, 0, true, true, null, 
                new SecureRandom()).toCharArray();

如果我用main方法执行此代码,它似乎运行良好。

2 个答案:

答案 0 :(得分:2)

您打印对象引用([C@1c3f05e5, [C@2b15e4de, [C@18c628b6)而不是对象的内容。

答案 1 :(得分:2)

您应该使用Arrays.toString(char[] a)包裹char[] password数组,以查看所需的结果。

编辑(评论):

它不打印对象引用,只是从Object调用toString(),因为缺少它自己的覆盖。

System.out.print[ln]从已传递的实例调用toString,因此以下几行相同:

System.out.print(password);
System.out.print(password.toString());

但是,正如我已经说过的那样,这并没有给出任何有用的输出。你应该使用

System.out.print(Arrays.toString(password));

使用数组,但不会覆盖此方法。