this.posX = (random.nextInt()>>>1) % (this.getWidth()-20) + 10; //生成小球位置X坐标

来源:百度知道 编辑:UC知道 时间:2024/06/17 00:06:31
什么意思

看不到全部程序,不知道上下文,只是针对这条语句,我给你做个解释:

这是生成X坐标的随机值,其中random.nextInt()应该是java.util.Random类的方法,随机返回一个int值。

random.nextInt()>>>1把这个随机值,进行无符号右移,相当于把这个int值变成二进制,然后右移一位,左边第一位添0补充。注意,在二进制编码中首位如果为1表示负数,为0表示正数。所以这条语句真正的用处是把有可能随机产生的负int值,变成正数。

然后(random.nextInt()>>>1) % (this.getWidth()-20),因为随即产生的int值会很大,所以把它与(this.getWidth()-20)求余,%是求余操作,这样产生的结果,就只能是从0到(this.getWidth()-20)-1了。

至于后面的+10,是把这个坐标定在离左边10,右边10(想想this.getWidth()-20)的一个范围内。

所以这条语句就是使用随机方法获得任意整数值,然后利用无符号右移操作,把负整数变成正整数,利用取余操作,把生成的整数限制在0到this.getWidth()-20范围内。然后+10,这样这个posX值就是在10到this.getWidth()-10范围内。就是离左边10,右边10的一个范围内。

不对吧,这里>>>应当是>>吧!random.nextInt是取得一个随机数,>>是右移,相当于乘2,%是取余,this.getwidth是调用当前对象的getwidth取和宽度