在Oracle"原始数据类型" 页面中,它提到Java 8增加了对无符号整数和长整数的支持:
int
:默认情况下,int
数据类型是32位带符号的二进制补码整数,其最小值为-2 31,最大值为2 31 -1.在Java SE 8及更高版本中,您可以使用int
数据类型表示无符号的32位整数,其最小值为0,最大值为2 32 -1.使用Integer
该类将int
数据类型用作无符号整数.有关更多信息,请参阅数字类一节.像静态方法compareUnsigned
,divideUnsigned
等已被添加到Integer
类,以支持算术运算的无符号整数.
long
:long
数据类型是64位二进制补码整数.签名long
的最小值为-2 63,最大值为2 63 -1.在Java SE 8及更高版本中,您可以使用long
数据类型表示无符号64位long
,其最小值为0,最大值为2 64 -1.当需要比int提供的值更宽的值时,请使用此数据类型.本Long
类也包含类似的方法compareUnsigned
,divideUnsigned
等支持算术运算的无符号long
.
但是,我发现无法声明无符号长整数或整数.例如,下面的代码给出了编译器错误消息"文字超出范围"(我当然使用的是Java 8),当它应该在范围内时(指定的值恰好是2 64 -1) :
public class Foo {
static long values = 18446744073709551615L;
public static void main(String[] args){
System.out.println(values);
}
} …
Run Code Online (Sandbox Code Playgroud) 我刚开始学习一些pygame(整体编程很新),我有一些关于它是如何工作的非常基本的问题.
我还没有找到一个地方解释我何时需要blit或不在屏幕上包含某个表面.例如,绘制圆形时:
circle = pygame.draw.circle(screen, (0, 0, 0), (100, 100), 15, 1)
Run Code Online (Sandbox Code Playgroud)
我不需要这样做screen.blit(circle)
,但在显示文字时:
text = font.render("TEXT", 1, (10, 10, 10))
textpos = text.get_rect()
textpos.centerx = screen.get_rect().centerx
screen.blit(text, textpos)
Run Code Online (Sandbox Code Playgroud)
如果我不blit,文本将不会出现.
说实话,我真的不知道blitting应该做什么,除了将所需的表面"粘贴"到屏幕上.我希望我已经足够清楚了.
我正在编写一个捕食者 - 猎物模拟使用python和pygame进行图形表示.我正在制作它,所以你可以实际上与一个生物"互动"(杀死它,选择它并在世界各地跟随它等).现在,当你点击一个生物时,一个粗圆圈(由gfxdraw类中的各种消除锯齿的圆圈组成)会吸引它,这意味着你已经成功地选择了它.
我的目标是使该圆圈透明,但根据文档,您无法为绘制的曲面设置alpha值.我已经看到了矩形的解决方案(通过创建一个单独的半透明表面,blitting它,然后在其上绘制矩形),但不是半填充圆.
你有什么建议?谢谢 :)
我正在努力优化我遇到速度问题的python程序.我正在玩另一个文档,其中包含了我的程序中出现的各种可能影响总执行速度的事情.
我找到:
a = 0
for x in range(10000000):
a += x
return a
Run Code Online (Sandbox Code Playgroud)
略慢于:
a = 0
for x in range(10000000):
a = a + x
return a
Run Code Online (Sandbox Code Playgroud)
第一个脚本执行需要1.5到1.55秒,而第二个脚本需要大约1,36-1.37秒(使用cProfile).
知道为什么会这样吗?谢谢 :)