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函数的类可不可以实例化?能否有详细的解答,谢谢!

想不到事隔数年,Java语法竟出现了这样的变化(不知道以前有无),直接static,一开始读代码,一头雾水,晕!
作用我大概是猜到一些,不过我就纳闷了,Java在载入类的时候留有入口供程序员执行代码,这本是虚拟机内部的工作,对用户应该是完全隐藏的啊,让程序员在这时候干什么呢?想不通!
对于楼主的问题,我想楼主应该首先了解你所写的每一段代码会在什么时候被执行,这是最起码的,否则写出来干嘛呢!
前面我猜的,static中的代码是在类被加载时执行,那么什么时候类被加载呢,我的逻辑应该是某个类中的元素被请求时,对比上面的代码结果,这一想法暂时还站得住脚。
类中只有两种元素可以被外界请求,一是静态元素,还有就是构造方法(在构造类的对象时被请求)。注意我上面说的是“类”而不是“对象”。
所以自然的,main被请求因此W类被虚拟机载入,然后请求了E的构造方法用来构造E的实例,所以E被载入,完事!

如果没有明白上面的阐述,请看下面的直接回答:
1、含有main函数的类的构造方法为什么没有被执行?
答:因为你没有构造该类的实例。只有在构造类的实例时才会请求类的构造方法。
2、包含main函数的类可否被实例化?
答:可以。类可否被实例化跟类的内容无关,只需要参考该类的定义,只有虚基类不可被实例化(当然没有访问权限的更不可能)。
3、开始做了总结性的阐述,上面两个问题的解答也都附带了简要的说明(应该说比较详细了)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-24
构造方法只能在实例化对象时自动运行。如果要一次运行多个构造函数,用this关键字,如果是调用父类构造函数请用super。

对于一般的程序执行main函数的是主线程,所有在main函数中直接调用的代码都属于这个线程,其结束整个程序就结束了
多线程如果把其他线程作为守护线程,那么在main函数的线程结束以后,这个线程仍旧可继续执行。
第2个回答  2010-01-06
CLASS W构造函数不执行是因为你没有调用此构造函数(你没有创建这个类的实例),构造函数的作用是创建类的对象和初始化属性的.
第3个回答  2019-08-06
构造函数
是一种特殊的方法
主要用来在创建对象时初始化对象
即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中
特别的一个类可以有多个构造函数
可根据其参数个数的不同或参数类型的不同来区分它们
即构造函数的重载
如果在创建类的时候,没有建立构造方法;那类会默认创建一个空的构造方法
如:
public
class
demo{
//默认创建这个方法,即是没有手动将创建——前提条件是类中没有创建任何有关构造方法
public
demo(){}
private
name;
...
}
希望我的回答可以帮到你~!
第4个回答  2010-01-06
1. W里的构造方法没有执行 是因为你没有创建W的实例,你创建的是E的实例 new E()
2. static语句优于构造方法执行,从运行结果上看也优于main方式执行
3. 实例化和含不含有main方法没有关系

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

Java main函数读取spring获取bean时遇到的一个问题BeanCreationException...
applicationContext.xml配置文件中配置的名叫adminprojecttypeAction的这个Action实例化失败了。 主要原因就是对应的AdminProjecrTypeAction这个类的构造方法里出现空的对象,导致空指针异常了。可以加断点调试一下,看看是哪个对象为空了。。。进行修复。

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

java 一个很奇怪的问题,有时候能运行,有时却提示错误
其实任何程序都有一个入口,对java来说就是你要执行的那个具体类必须有一个main方法,就想你附件中提示的,一个静态共有的main方法。而看你写得的代码很有意思是定义了一个stud的类,这个类有静态方法,但居然在这个类之外又直接定义了一个私有类Person。我估计你那个编辑器运行的时候随机查找类的main...

构造方法何时被调用?
public static void main(String[] args){ A a = new A() ;调用了无参构造方法; A a1 = new A(5,vieri);调用了两参构造方法 } } 问题二:java 构造函数什么时候被调用执行 在java语言 中,构造函数又称构造方法。特殊性在于,与普通方法的区别是,他与类名相同,不返回结果也不加void返回值。构...

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

java程序的main方法必须写在类里面吗
这个程序的方法必须写在类里面。main方法是程序的入口点,而类是Java的基本构造单位。将main方法放在类里面可以方便地组织和管理程序代码,并且符合Java的面向对象编程思想。Java程序需要一个类作为主类,包含main方法,以便JVM能够找到程序的入口点并执行程序。

java中关于构造器构造函数构造方法重载方法的困惑
方法一:--- public String +(String s ,int i){ return s+i.toString() ;} 重载方法:--- public String +(inti ,int j){ return i.toString()+j.toString() ;} \/\/其中toString()是将整形转化为字符串的方法;\/\/+号是方法名;--- public String +(String s1,String s2);就叫做方法...

如何使java的构造函数运行?
没有别的办法,构造函数只会在对象生成的时候执行...比如你有个Test类我猜你写的是Test t = new Test();在下面的程序中没有用到t,会提示可以删除,可以不写对象的引用,直接写成new Test();就执行构造了..t只是一个Test类型的引用,引用了new Test();出来的对象。

相似回答