相关疑难解决方法(0)

将整数转换为字节数组(Java)

将一个转换Integer成一个快速的方法是Byte Array什么?

例如 0xAABBCCDD => {AA, BB, CC, DD}

java arrays byte integer

129
推荐指数
5
解决办法
24万
查看次数

原始类型'短' - 用Java编写

我对shortJava中的原始类型有疑问.我使用的是JDK 1.6.

如果我有以下内容:

short a = 2;
short b = 3;
short c = a + b;
Run Code Online (Sandbox Code Playgroud)

编译器不想编译 - 它说它"无法从int转换为short"并建议我进行转换short,所以这样:

short c = (short) (a + b);
Run Code Online (Sandbox Code Playgroud)

确实有效.但我的问题是为什么我需要施放?a和b的值在short- 范围内 - 短值范围是{-32,768,32767}.我还需要在我想执行操作时进行投射 - ,*,/(我没有检查过其他人).

如果我对原始类型做同样的int事情,我不需要将aa + bb转换为int.以下工作正常:

int aa = 2;
int bb = 3;
int cc = aa +bb;
Run Code Online (Sandbox Code Playgroud)

我在设计一个类时需要添加两个类型为short的变量,并且编译器希望我进行转换.如果我用两个类型的变量做这个int,我不需要强制转换.

一句小话:原始类型也会发生同样的事情byte.所以,这有效:

byte a = 2;
byte b = 3;
byte c = (byte) (a + b); …
Run Code Online (Sandbox Code Playgroud)

java primitive casting short

76
推荐指数
5
解决办法
13万
查看次数

我不理解Java中二进制数的行为

我有以下代码:

System.out.println(0b11111111);
System.out.println((byte) 0b11111111);
Run Code Online (Sandbox Code Playgroud)

第一行打印

255

并打印第二行

-1

请问有人可以解释一下为什么结果会有所不同?(byte)铸造如何改变0b11111110它变成的数字-1

谢谢!

java binary

0
推荐指数
1
解决办法
66
查看次数

为什么ThreadLocalRandom.current().nextInt(1,255); 返回值超出范围[1,254]?

我试图生成一个随机正8位整数.ThreadLocalRandom.current().nextInt(min,max)的文档明确指出min是最小包含边界,max是最大独占边界.但是,如果我将max设置为大于128的任何值,我偶尔会得到一个负值.

这似乎与整数的位相关联,但文档没有说明nextInt()的位.我真的需要尽可能多的正8位数字.当我只指定(1,255)的正范围时,为什么nextInt()返回负值?

byte aa = 1;
    do {
            aa = (byte) ThreadLocalRandom.current().nextInt(1, 128);
    } while (aa > 0);
    System.out.println(aa);
Run Code Online (Sandbox Code Playgroud)

java random

0
推荐指数
1
解决办法
959
查看次数

标签 统计

java ×4

arrays ×1

binary ×1

byte ×1

casting ×1

integer ×1

primitive ×1

random ×1

short ×1