gpt4 book ai didi

java - Java 字节变量怎么会是 128?

转载 作者:太空狗 更新时间:2023-10-29 15:36:41 27 4
gpt4 key购买 nike

我可能错过了对 Java 中字节的一些基本理解。以下是应用程序的简化摘录以说明问题:

public class Foo
{
byte b1;
byte b2;
byte bProblem;
}

foo 是 Foo 的一个实例。以下内容让我困惑了几个小时:

Log.d("Debug", "Before: " + String.valueOf(foo.bProblem));
if (foo.bProblem != (byte) 0x80) {
foo.bProblem = (byte) 0x80;
Log.d("Debug", "After: " + String.valueOf(foo.bProblem));
}

LogCat 显示以下内容:

03-17 21:58:46.590: D/Debug(2130): Before: 128    
03-17 21:58:46.590: D/Debug(2130): After: -128

对于 foo.bProblem,Eclipse 的调试器总是显示 -128 (0x80)。这意味着调试器看不到 String.valueOf() 揭示的内容。一个Java字节怎么可能是128?

我在将 foo.bProblem 添加到 List 时注意到了这一点:Java.lang.ArrayIndexOutOfBoundsException: 长度=256; index=256

谁能给我一些提示让我理解这一点?

编辑:

我后来发现这只发生在 Intel Android 模拟器上,正如我在 Joop 的回答后的评论中所写的那样。

最佳答案

String.valueOf 不占用一个字节,它占用以下之一:

boolean 值字符字符[]双倍的漂浮整数长的对象

在您的实现中,您实际上是在调用 String.valueOf(int value)它实际上不包含 128 的值。尝试打印

Log.d("Debug", "" + bProblem)

这应该有效。

编辑--

我想说的是 String.valueOf 实际上并不是在查看字节的值。它正在查看构成字节的相同位作为 int 并打印它。

关于java - Java 字节变量怎么会是 128?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com