程序源代码如下:
import java.awt.*;
import java.applet.*;
class cc
{static int n;
int nn;
static
{n=20;}
cc()
{nn=n++;}
}
public class c4_8 extends Applet{
public void paint(Graphics g)
cc m=new cc();
cc m1=new cc();
g.drawString("m1="+m1.nn,20.50);
g.drawString("m="+m.nn,20,90);
}
}
运行结果如下: m1=21
m=20我不明白为什么两个对象得出的结果会不同,还有不知道为什么每次用eclipse运行程序成功后再最小化最大化applet小程序的窗口时,结果m1和m的值都会+1
哪位高手进来讲解一下
import java.awt.*;
import java.applet.*;
class cc
{static int n;
int nn;
static
{n=20;}
cc()
{nn=n++;}
}
public class c4_8 extends Applet{
public void paint(Graphics g)
cc m=new cc();
cc m1=new cc();
g.drawString("m1="+m1.nn,20.50);
g.drawString("m="+m.nn,20,90);
}
}
运行结果如下: m1=21
m=20我不明白为什么两个对象得出的结果会不同,还有不知道为什么每次用eclipse运行程序成功后再最小化最大化applet小程序的窗口时,结果m1和m的值都会+1
哪位高手进来讲解一下
然后把n在构造函数中初始化,应该就没问题了。
cc m1=new cc(); n = 21, nn = 21。明白了就结贴
import java.awt.*;
import java.applet.*;
class cc
{static int n;
int nn;
static //1、首先在此执行,此时n=20;(new出m实例时)
{n=20;}
cc() //2、然后执行这,此时nn=20,n=21;(new出m实例时)//3、最后执行这,此时nn=21,n=22;(new出m1实例时)
{nn=n++;}
} public class c4_8 extends Applet{
public void paint(Graphics g)
cc m=new cc();
cc m1=new cc();
g.drawString("m1="+m1.nn,20.50);
g.drawString("m="+m.nn,20,90);
}
} 建议学习一下静态代码块与构造器的用法哟!