求教静态初始化块、对象初始化块、构造器执行顺序有关问题
发布时间:2010-06-05 15:36:39 文章来源:www.iduyao.cn 采编人员:星星草
求教静态初始化块、对象初始化块、构造器执行顺序问题
package kevin.study.CT;
public class ConstructorTest
{
public static void main(String[] args)
{
Employee[] staff=new Employee[3];
staff[0]=new Employee("Harry",4000);
System.out.println("Next availble Id is:"+Employee.getnextId()); staff[1]=new Employee(5000);
staff[2]=new Employee();
for(Employee e:staff)
System.out.println("id:"+e.getId()+ ",name:"+e.getname()+ ",salary:"+e.getsalary());
}
}
import java.util.*;
class Employee
{
public Employee(String n, double s)
{
name=n;
salary=s;
}
public Employee(double s)
{
this("Employee #"+nextId,s);
}
public Employee()
{
}
public String getname()
{
return name;
}
public double getsalary()
{
return salary;
}
public int getId()
{
return id;
}
public static int getnextId()
{
return nextId;
}
private String name="Hellen";
private double salary=6000;
private int id;
private static int nextId;
static
{
Random generator=new Random();
nextId=generator.nextInt(10000);
}
{
id=nextId;
nextId++;
}
}
今天看书看到有关初始化块的内容,然后根据书上的一个例子操作了一下。上面代码中红色的部分是想验证nextId的值在不同地方各是多少?结果发现nextId在生成随机数字后,把他放在STAFF这3个数组的不同地方,在控制台上输出的值也是不同的。虽然和我设想的一样,但是想不通的是nextId在系统内是如何变化(就是程序的执行顺序)的?他在什么时候会自加1,然后输出呢?
求各位高人指教!!!
------解决方案--------------------
非静态块在new对象的时候执行 你在非静态块里面加个输出看下就明白
------解决方案--------------------
每个对象在new的时候都会分配一块内存地址的~~所以每个对象都会有一个id互相没有关系的。你get的时候也是各自拿各自的。说到静态块,就像静态变量一样,是所有对象所共享的!
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
请教。。MyEclipse 连接数据库时总出现Debug错误
Class File Editor
source not found
The source attachment does not contai...
-
eclipse插件打开透视图
在Package Explorer中右击菜单中可不可以添加一个按钮,通过点击此按钮打开SVN的透视图呢?求解。。。
-----...
-
jdbc mysql输出时中文都是?
第一次用mysql,写出的程序输出
name->age->sex
?->20->?
中文都是? 了,这是什么情况?
------解决方案----...
-
大哥,eclipse删除工程时选择了 also delete contents under..能恢复不
如题 多谢
------解决方案--------------------
应该不...
-
一个关于SWT Combo的送分题
我有一个工作人员的Combo下拉框,里面的存的是工作人员(一种是在线的,一种是不在线的),请问用什么方法将其...
-
如何删除eclipse中的无用插件
我是在原来eclipse的基础之上,安装了myeclipse,后来用安装了lomboz的插件,不过后来得知myeclipse中已...
-
Eclipse的3大GUI开发插件
Eclipse的3大GUI开发插件Visual Editor,WindowBuilder,jigloo
哪个好用啊,求助,谢谢
------解决方案------...
-
如何部分“限制”Eclipse的代码自动补全(详细请进。。。)
举个例子说吧(CSDN的图太难插了,只好照猫画虎搞个代码提示框)
class Conn...
-
My eclipse 9.0如何打开文档
这是我的一个java工程
这是我用myeclipse打开其中的.project的文件的结果,没法运行,我打开包下面的....
-
关于 优化myeclipse中启动速度
我看过网上的一些大虾的建议,但是我还是有点不太确定那个windows-preference-general-startupand s...