相关疑难解决方法(0)

为什么这段代码使用随机字符串打印"hello world"?

以下print语句将打印"hello world".有人能解释一下吗?

System.out.println(randomString(-229985452) + " " + randomString(-147909649));
Run Code Online (Sandbox Code Playgroud)

而且randomString()看起来是这样的:

public static String randomString(int i)
{
    Random ran = new Random(i);
    StringBuilder sb = new StringBuilder();
    while (true)
    {
        int k = ran.nextInt(27);
        if (k == 0)
            break;

        sb.append((char)('`' + k));
    }

    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

java string random

1733
推荐指数
14
解决办法
19万
查看次数

这怎么打印"你好世界"?

我发现这个怪异:

for (long l = 4946144450195624l; l > 0; l >>= 5)
    System.out.print((char) (((l & 31 | 64) % 95) + 32));
Run Code Online (Sandbox Code Playgroud)

输出:

hello world
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?

java string bit-shift

163
推荐指数
6
解决办法
6499
查看次数

标签 统计

java ×2

string ×2

bit-shift ×1

random ×1