gpt4 book ai didi

Java Integer.MAX_VALUE 与 Kotlin Int.MAX_VALUE

转载 作者:IT老高 更新时间:2023-10-28 13:40:18 29 4
gpt4 key购买 nike

我注意到了一件有趣的事情。
Java 的 Integer.MAX_VALUE0x7fffffff (2147483647)
Kotlin 的 Int.MAX_VALUE2147483647
但是如果你写
在 Java 中:
int 值 = 0xFFFFFFFF;
//一切都很好(但打印的值为'-1')

在 Kotlin 中:
val value: Int = 0xFFFFFFFF//你得到异常
整数字面量不符合预期的类型 Int

很有趣吧?因此,您可以在 Java 中执行 new java.awt.Color(0xFFFFFFFF, true) 而在 Kotlin 中执行 not 之类的操作。

Color 类在“二进制”级别与该 int 一起工作,因此对于所有构造函数(Color(int rgba)Color (int r, int g, int b, int a)).
我为 kotlin 找到的唯一解决方法是 java.awt.Color(0xFFFFFFFF.toInt(), true)

知道为什么 Kotlin 会这样吗?

最佳答案

这是部分回答 here :

In Kotlin you need to prepend the - sign to denote negative Int which is not true in Java.

所以 Java 似乎会将十六进制文字解释为 signed ,而 Kotlin 会将它们视为未签名的。

必须手动进行否定。

顺便说一句:JetBrains 的 Kotlin 转换器实际上可以转换

int a = 0xffffffff;

var a = -0x1

但这可能只是它准确地意识到你所注意到的。


The part of the spec for hexadecimal literals然而,根本没有提到这一点。

关于Java Integer.MAX_VALUE 与 Kotlin Int.MAX_VALUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47462793/

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