java含有main函数的类的构造方法执行的疑问?

我的代码如下:
class Q
{
static
{
System.out.println("Q class is loading");
}
}
class E
{
static
{
System.out.println("I never run");
}
}
class W
{
static
{
System.out.println("W class is loading");
}
public static void main(String[] args)
{
new E();
}
W()
{
System.out.println("I wish I be the frist.");
}
}
编译运行后:
W class is loading
I never run

我想问的是为什么哈有main函数的类W里的构造函数不执行了呢?含有main函数的类可不可以实例化?能否有详细的解答,谢谢!

第1个回答  2010-01-06
首先你执行的是静态方法 他本身是不需要创建对象的

然后 之所以E里面的static块会执行 是因为 构造方法本身是静态的 只要该类被加载 那么static块一定会被执行 而构造方法是在你创建该类的对象的时候才执行的

LZ可以好好的了解下类方法与对象方法的去被 static的作用在什么地方
第2个回答  2010-01-06
首先你要搞清楚构造方法的作用,构造方法就是用来实例化对象用的,当你创建一个对象,也就是实例化一个对象的时候,系统会调用相应的构造方法来构造对象。
然后你要搞清楚,static块里内容什么时候执行。当一个类被java虚拟机加载进来的时候就会执行该类里面static块里的方法
最后你要搞清楚的是,每一个常规类系统都会自动给一个默认的无参的构造方法,当你手动给该类写一个构造方法的时候,默认的那个无参的构造方法就会消失。
所以带有main函数的类也必须一定以及肯定可以有构造方法的。main()函数只是这个类里的一个静态方法而已,只不过它是作为一个java程序的入口而已。java虚拟机再加载一个java程序的时候,在执行这个程序之前,会寻找一个入口,而main()主函数就是入口,所以程序会从main()函数开始执行,然后用到哪个类或是方法再调用执行。

java含有main函数的类的构造方法执行的疑问?
1、含有main函数的类的构造方法为什么没有被执行?答:因为你没有构造该类的实例。只有在构造类的实例时才会请求类的构造方法。2、包含main函数的类可否被实例化?答:可以。类可否被实例化跟类的内容无关,只需要参考该类的定义,只有虚基类不可被实例化(当然没有访问权限的更不可能)。3、开始做...

java 一个很奇怪的问题,有时候能运行,有时却提示错误
private String name; \/\/声明姓名属性 private int age; \/\/声明年龄属性 public Person(){ \/\/无参构造 } public Person(String name,int age){ \/\/取得信息的方法 this(); \/\/在此处调用Person类中的无参构造方法 this.name=name;this.age=age;} public String getInfo(){ retu...

关于Java构造方法的一个问题
public test(String str) { \/\/这是一个有参构造方法,在这个方法内调用了上面的空参构造方法。this();System.out.println("执行this()后,调用了有参构造方法。输出参数:"+str);} public void test(){ System.out.println("普通方法");} public static void main(String[] args) { test t=...

java中关于构造器构造函数构造方法重载方法的困惑
比如说你要将一个字符串和一个整形的数据加起来形成一个字符串.(假设+号默认只能连接两个字符串).这时你就要对+号声明方法:public String +(String s ,int i){}.又如果你想把两个整形的数据连接起来.就要进行方法重载:public String +(inti ,int j){}.方法一:--- public String +(String s...

java中主函数调用构造方法和成员方法
而成员方法是由类对象主动调用的,使用点操作符,它有返回值 构造方法是赋予对象"生命特征"的,成员方法则是对象所具有的"行为,能力"构造方法只有在建立对象时由系统调用的,其他任何时候你都别指望用他.成员方法,如果是静态的,可以不要对象,直接调用,否则,需要先新建对象,再通过对象来调用即可。

java main类调用其他类不能实现的原因?
在外部类之外不能直接通过内部类实例对象来调用外部类中的内部类的方法和数据,必须通过外部类的方法来间接调用,或者把内部类申明为static,这样内部类成为顶层类之后便可以直接调用,所以楼主可以把类line变为静态类,public static class Line,或者在外部类再加个方法来调用内部类的构造函数即可 ...

java中,main函数里获取到的数据,我想在另外一个类的方法里进行使用,我...
有两个建议:把它存到数据源,然后在另外的方法里调取;直接在main中调用另外的一个方法,并且以参数的形式传入这个方法.例如:在main中获得了a,想在方法b()中使用a,可以把b()改为b(int v)然后再main中b(int a)就可以了

java类中构造方法是必须的吗?还是只有javabean中的构造方法是必须...
一、在java中,构造方法不是必须显示定义的,如果没有定义构造方法,那么该类就有一个默认的无参数构造方法 二、main方法也不是必须的,main方法是作为运行这个类的入口,如果你不是要单独的运行这个类则不用写main方法

Java类的构造方法,怎么调用构造方法 我写的有错误
不能直接调用,要用this关键字:比如这一句,Employee(int newAge,double newSalary)\/\/要求调用俩个参数的构造方法,传入参数newAge和newSalary 修改为:this(newAge,newSalary)\/\/要求调用俩个参数的构造方法,传入参数newAge和newSalary 并且,实参不需要加类型修饰符。其他的几条,也作这样的修改。

java的小问题 为什么执行的 时候 构造方法没有执行
构造方法是new对象时调用的,比如 T t=new T(),其中T()就是类T的构造方法。所以你这段程序中构造方法没用。

相似回答