上限为int
-2147483648至2147483647。
如果我输入
int i = 2147483648;
然后Eclipse将在“ 2147483648”下提示红色下划线。
但是,如果我这样做:
int i = 1024 * 1024 * 1024 * 1024;
它将编译良好。
public class Test {
public static void main(String[] args) {
int i = 2147483648; // error
int j = 1024 * 1024 * 1024 * 1024; // no error
}
}
也许这是Java中的一个基本问题,但是我不知道为什么第二个变体不会产生任何错误。
那句话没有错。您只是将4个数字相乘并将其分配给一个int,恰好发生溢出。这与分配单个 文字 不同,后者在编译时会进行边界检查。
导致错误而不是 赋值的 是超出范围的 文字 : __
System.out.println(2147483648); // error
System.out.println(2147483647 + 1); // no error
相反,long
文字可以编译良好:
System.out.println(2147483648L); // no error
请注意,实际上,结果仍然 是 在编译时计算的,因为它1024 * 1024 * 1024 * 1024
是一个
常量表达式
:
int i = 1024 * 1024 * 1024 * 1024;
变成:
0: iconst_0
1: istore_1
请注意,结果(0
)只是简单地加载和存储,并且不会发生乘法。
从JLS§3.10.1起(感谢@ChrisK在评论中提出):
如果type的十进制文字
int
大于2147483648
(2
31),或者十进制文字2147483648
出现在非一元减运算符的操作数之外的任何地方(第15.15.4节),则这是编译时错误。
的限制是从-2147483648到2147483647。 如果我输入 然后Eclipse会在“2147483648”下提示红色下划线。 但是如果我这样做: 很好。 也许这是Java中的一个基本问题,但我不知道为什么第二个变体不会产生错误。
1024 1024是一个基于Java 的小游戏。 游戏规则 可将活动方块向上,下,左,右4个方向移动 相同数字的方块碰撞到一起可合并为一个方块,合并的方块数字为2者之和 操作 选中:单击目标方块 移动:上(W),下(S),左(A),右(D) 重新开始:空格(Space) 演示 数字与颜色对照表 对应的数字依次为2的N次方 版权 本软件遵循GPL(GNU GENERAL PUBLIC LICENS
问题内容: 如何转换此C(数组)类型: 转到此Go(数组)类型: ?尝试进行接口转换会给我这个错误: 问题答案: 最简单,最安全的方法是将其复制到切片中,而不是专门复制到 要直接使用内存而不进行复制,可以通过来“广播” 。
问题内容: 在Java中将字符串拆分为1024个字节的块的有效方法是什么?如果有多个块,则需要在所有后续块中重复标头(固定大小的字符串)。 问题答案: 字符串和字节是完全不同的两件事,因此要将字符串拆分为字节与将绘画拆分为经文一样没有意义。 您实际上想做什么? 要在字符串和字节之间进行转换,您需要指定一种编码,该编码可以对String中的所有字符进行编码。根据编码和字符,其中一些可能跨越一个以上的
在iOS10中,NSlog限制为1024个字符,任何人都知道打印完整字符串的解决方法。
我正在使用最新版本的骆驼和Netty与Spring,并且具有以下定义: 我定义了一个类来处理传入的tcp请求: 我的问题是,不管传入消息的大小,buf变量永远不会超过1024字节,因此我的请求被截断。 根据组件定义,receiveBufferSize应该是65536字节。我如何处理大的请求?