我编写了以下代码来测试java执行从0到大数的简单任务需要多长时间:
public static void main( String[] args )
{
for( long k = 0 ; k <= 1000000000000000000L /* 18 zeros */ ; k++ )
;
System.out.println( "Finished" );
}
Run Code Online (Sandbox Code Playgroud)
我运行程序并等了几个小时.等了这么久以后我除了参考一些计算来估计这个运行时间之外别无他法,并且通过一个简单的计算我确信程序最终可能需要超过100年(取决于CPU)才能最终打印消息"完了"!
但是在尝试下面的代码看起来花费的时间与上面的代码完成时,我意外地看到在完成程序后,在几分之一秒内打印出"完成"消息!
public static void main( String[] args )
{
int j;
for( int i = 0 ; i <= 1000000000 /* 9 zeros */ ; i++ )
for( j = 0 ; j <= 1000000000 /* 9 zeros */ ; j++ )
;
System.out.println( "Finished" );
}
Run Code Online (Sandbox Code Playgroud)
java的行为与这两段代码有什么区别?java的行为与int数字之间必然存在一些差异,并且其行为与int以外的整数类型有关.
我在Ubuntu 14.4.1中编写了一个简单的Java动画程序.一个球在JPanel内移动.但在执行时,球在JPanel中变得非常生涩.这个问题一直持续到我在JPanel中移动鼠标为止.在JPanel内移动鼠标时,球的运动非常顺畅.应该说我在Windows 10中运行了这个程序,并没有出现问题.我的程序代码如下:
import java.awt.*;
import javax.swing.*;
public class BouncingBall extends JPanel {
Ball ball = new Ball();
void startAnimation() {
while( true ) {
try {
Thread.sleep( 25 );
ball.go();
repaint();
} catch( InterruptedException e ) {}
} // end while( true )
} // end method startAnimation()
protected void paintComponent( Graphics g ) {
super.paintComponent( g );
ball.draw( g );
} // end method paintComponent
// inner class Ball
class Ball {
int x;
int y;
int diameter …Run Code Online (Sandbox Code Playgroud)