java main函数不执行?

今天脑袋短路,对于这个问题纠结了好久。这个问题具体是这样的:

public class test {

    public static void main(String[] args) {
        test2 t = new test2();
        System.out.println("" + t.i);
        t.meth();

    }

}
public class test2 {
    public Integer i=5;
    test2(){
        System.out.println("构造函数");
    }
    public static void main(String[] args) {
        System.out.println("main函数");
    }
    public void meth(){
        System.out.println("普通方法");
    }

}

此程序运行结果如下:

我当时就问:java不是从main开始吗?怎么test2的main函数没有执行?

于是开始了各种不解。

后来才恍然大悟,main是java程序的入口,java也的确是从main开始的,需要注意的是main这个入口是对于整个java程序而言,不是对于某了类!因此,此入口只能有一个,且只执行一个!否则,所有的main函数都可作入口了,那就乱套了。

java main函数不执行?,布布扣,bubuko.com

时间: 2024-10-25 13:49:45

java main函数不执行?的相关文章

多玩YY语音的面试题:C++中如何在main()函数之前执行操作?

第一反应main()函数是所有函数执行的开始.但是问题是main()函数执行之前如何执行呢? 联想到MFC里面的 C**App类的theApp对象,其执行顺序就在main函数之前.道理相通,顺理推下,能够想到:如果在main函数之前声明一个类的全局的对象.那么其执行顺序,根据全局对象的生存期和作用域,肯定先于main函数. 示例如下: class simpleClass { public: simpleClass( ) { cout << "simpleClass construct

全局对象的构造函数会在main 函数之前执行

#include <iostream> using namespace std; class A { public: A() { cout << "Generator A" << endl; } } a = A(); int main() { cout << "Hello World" << endl; } 全局对象的构造会在main函数之前执行.

电脑从开机加电到操作系统main函数之前执行的过程

总的来说在操作系统加电启动之后到main函数执行之前操作系统经历了以下3个大步骤 1.启动BIOS.这个时候位于实模式下,加载中断向量和中断服务程序 2.加载操作系统内核并为保护模式做准备.这个时候操作系统一共加载了3部分代码:引导程序bootsect,内核代码setup,内核代码system模块 3.从实模式转换为32位保护模式.这个过程要做大量重建工作,并且持续工作到操作系统main函数的执行过程.细说的话,主要包括打开32位寻址空间,打开保护模式,建立保护模式下的中断相应机制与保护模式配套

在main函数之外执行函数的情况

1.onexit函数 #include "stdafx.h" #include "iostream" #include <stdlib.h> using namespace std; int func() //必须为int返回值 { cout<<"This is after main function"<<endl; system("pause"); return 0; } int main

怎样使代码在main函数前执行,怎样使代码在main函数之后执行

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 网上有说可以用 __attribute__ ((constructor)) 来让函数在main函数之前执行, __attribute__ ((destructor)) 来让函数在main函数之后执行. 比如说像下面这样声明函数 void before(void) __attribute__ ((constructor)); void after(void) __attribute__ ((

2)main函数在执行前和执行后有哪些操作

main函数执行之前,主要就是初始化系统相关资源: ? ? ?1. 设置栈指针 ? ? ?2. 初始化static静态和global全局变量,即data段的内容 ? ? ?3. 将未初始化部分的全局变量赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容 ? ?? ? ? ?4. 全局对象初始化,在main之前调用构造函数 ? ? ?5. 将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数 main

windows平台中让函数在main函数之前执行的方法

1.将要执行的代码写到类的构造函数中,并定义对应的全局变量2.将要执行的代码写到TLS回调函数中在c/c++中,我们都知道main函数是程序开始执行的地方,但是在进行反调试的时候,很多时候都需要调试检测函数在main函数之前执行. 1.将要执行的代码写到类的构造函数中,并定义对应的全局变量在windows平台中,执行我们手写的main函数之前,系统会执行一段CRTstartup代码,对系统的堆栈.全局变量.命令行参数.环境变量等进行初始化操作.该方法就是利用windows在执行main函数之前先

Java Main如何被执行?

java应用程序的启动在在/hotspot/src/share/tools/launcher/java.c的main()函数中,而在虚拟机初始化过程中,将创建并启动Java的Main线程.最后将调用JNIEnv的CallStaticVoidMethod()来执行main方法. CallStaticVoidMethod()对应的jni函数为jni_CallStaticVoidMethod,定义在/hotspot/src/share/vm/prims/jni.cpp中,而jni_CallStatic

Java Main如何被执行?(转)

java应用程序的启动在在/hotspot/src/share/tools/launcher/java.c的main()函数中,而在虚拟机初始化过程中,将创建并启动Java的Main线程.最后将调用JNIEnv的CallStaticVoidMethod()来执行main方法. CallStaticVoidMethod()对应的jni函数为jni_CallStaticVoidMethod,定义在/hotspot/src/share/vm/prims/jni.cpp中,而jni_CallStatic