CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

构造函数和main(String args[]){},哪个先执行?

楼主westuser()2006-02-12 14:59:23 在 Java / J2SE / 基础类 提问

public   class   test{  
  test(){}  
  public   static   void   main(String   args[]){}  
  }  
  //哪个先执行呢? 问题点数:20、回复次数:24Top

1 楼aaa2003gf(珍惜 (MSN:aaa2003gf@hotmail.com))回复于 2006-02-12 15:07:17 得分 1

main   先Top

2 楼yxwmxkq(酷得经动了党)回复于 2006-02-12 15:10:42 得分 1

先静态后动态  
  先成员后构造Top

3 楼zjrkif(风寒凝)回复于 2006-02-12 17:34:31 得分 1

main(String   args[]){}是java程序的入口  
  构造函数是在创建类test的对象时由编译器自动调用的  
  也就是说程序先从main()函数进入,遇到类的对象时在调用构造函数。Top

4 楼lydvqq(碧水情缘♀黑哥)回复于 2006-02-12 20:44:21 得分 1

main(String   args[]){}先Top

5 楼asp911()回复于 2006-02-12 21:02:20 得分 1

main方法是程序的入口....Top

6 楼chyx413332087()回复于 2006-02-12 21:22:33 得分 1

public   class   test{  
  test(){System.out.println("dfd");  
  }  
  public   static   void   main(String   args[]){  
  System.out.println("测一下哪个先");  
  }  
  }  
  main()先Top

7 楼liaoxingya276(独孤过客)回复于 2006-02-12 21:35:24 得分 1

在你的程序中,main会执行,test()不会执行Top

8 楼ftlovexg(噼里啪啦)回复于 2006-02-12 22:08:49 得分 1

在main里调用test()才能执行test()Top

9 楼chg2008(岂能尽如人意,但求无愧我心!)回复于 2006-02-13 08:16:24 得分 1

main先,从线程的角度,他是手护线程Top

10 楼xzgyb(老达摩)回复于 2006-02-13 08:56:17 得分 1

你这个包含main的test类也是一个普通的公共类  
  你没有构造它,当然构照函数就不会执行  
  只执行mainTop

11 楼HengHuan(山里人)回复于 2006-02-13 08:57:03 得分 0

同意各位楼主,帮顶——Top

12 楼figoren(figoren)回复于 2006-02-13 10:44:17 得分 1

main()Top

13 楼spinach110(菠菜)回复于 2006-02-13 11:12:15 得分 1

main()先Top

14 楼gifted1982(玩游戏的Coder)回复于 2006-02-13 11:21:14 得分 1

先静态后动态  
  先成员后构造  
   
  可以做个测试类,然后设置断点走一下就知道了Top

15 楼hello132(hell123)回复于 2006-02-13 11:25:53 得分 1

先静态后动态Top

16 楼weinickli(总有路,总没走)回复于 2006-02-13 11:35:05 得分 1

main~~   这是系统调用~~再调用里面的程序~~要是你不用到定了main的类~~~构造函数就不调用了Top

17 楼universe01(未知软体)回复于 2006-02-13 11:52:29 得分 1

main先!Top

18 楼treeroot(旗鲁特)回复于 2006-02-13 12:31:05 得分 1

晕的一塌糊涂,main方式是入口,不是先不先的问题  
  只有new的时候才会调用构造函数.  
  根本就是完全不同的概念,哪里来的先后之分?Top

19 楼tiesoftware(我想早恋----但是已经晚了:( )回复于 2006-02-13 15:31:34 得分 1

我觉得要看情况了,要是构召函数是static方法的呢?是不是应该先执行构找函数呢Top

20 楼K1234567890(Ken.Lv)回复于 2006-02-13 15:32:55 得分 1

程序在进入MAIN之前的确会进行一些初始化的工作,例如一些全局变量,静态变量等等.  
  但现代的编译技术有时也可能会采取在实际使用到变量时才真正初始化变量,以加快程序启动的速度.所以不能主观而论的.  
   
  楼主的程序比较简单,但思考是应该提倡的呀?越是简单的程序,越要深挖呢..Top

21 楼mlyb()回复于 2006-02-13 16:11:58 得分 0

先main  
   
  Top

22 楼treeroot(旗鲁特)回复于 2006-02-13 16:28:47 得分 0

要是构召函数是static方法的呢?  
   
  这句话事虾米意思????????????????????????Top

23 楼superstack(snowolfe)回复于 2006-02-13 17:15:43 得分 0

实践才是真理Top

24 楼sophitia212(皓血)回复于 2006-02-14 02:30:34 得分 1

看大家这么热情我也来谈谈我的看法  
  首先我认同,如果带main()的类没有被new   是不会执行构造方法的。  
  有人说main()是最先执行的,其实如果你看了《core   java》你会发现static   initialization   block是最先执行的,他有个例子如下:  
  public   class   Hello  
  {  
        static  
        {  
              System.out.println("Hello,   World");  
              System.exit(0);  
        }  
  }  
  这样一个应用程序就能在没有main()的情况下输出一行字到控制台。  
  其实静态初始化块也属于类的初始化的一部份,他负责初始化静态变量,他是在类第一次被调用的时候被调用。下面是《core   java   7》原话:  
  ==================================================  
  You   initialize   a   static   field   either   by   supplying   an   initial   value   or   by   using   a   static   initialization   block.   You   have   already   seen   the   first   mechanism:  
   
  static   int   nextId   =   1;  
   
  If   the   static   fields   of   your   class   require   complex   initialization   code,   use   a   static   initialization   block.  
  ==================================================  
   
  另外再提一下对象的初始化,也就是调用构造方法的时候,java的处理过程(注意与类的初始化分开)。  
  1.All   data   fields   are   initialized   to   their   default   value   (0,   false,   or   null).  
   
  2.All   field   initializers   and   initialization   blocks   are   executed,   in   the   order   in   which   they   occur   in   the   class   declaration.  
   
  3.If   the   first   line   of   the   constructor   calls   a   second   constructor,   then   the   body   of   the   second   constructor   is   executed.  
   
  4.The   body   of   the   constructor   is   executed.  
   
  下面是对上面的话的一些解释,本人英语水平有限,翻译和解释有错的地方请大家指导。  
   
  1.所有数据都被初始化成他的默认值(0,   false,   or   null)  
  2.所有数据初始化(也就是你定义的全局变量:private   int   i=5;),所有的初始化块被调用。  
  3.如果构造器的第一行调用第二个构造器,那么第二个构造器被调用。  
  4.构造器被调用。  
   
   
  Top

相关问题

  • [8]STRING的构造函数 string(char * value)
  • 构造函数
  • 构造函数
  • 构造函数??
  • 构造函数
  • 函数构造
  • @@@@@@ 构造函数 @@@@@
  • XMLOutputter类是不是有一个构造函数XMLOutputter(String,boolean,String)?
  • WebService构造函数
  • 求助:void 函数名(..., params String[] args)

关键词

  • 函数
  • 执行
  • 构造
  • 调用
  • 初始化
  • 变量
  • 类
  • 静态
  • 程序
  • main

得分解答快速导航

  • 帖主:westuser
  • aaa2003gf
  • yxwmxkq
  • zjrkif
  • lydvqq
  • asp911
  • chyx413332087
  • liaoxingya276
  • ftlovexg
  • chg2008
  • xzgyb
  • figoren
  • spinach110
  • gifted1982
  • hello132
  • weinickli
  • universe01
  • treeroot
  • tiesoftware
  • K1234567890
  • sophitia212

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo