JVM调用类的main方法的过程

jvm先装载类,再链接类,再初始化类(以代码的文本顺序执行类变量初始化器、类静态初始化方法或接口的属性(field)初始化器),完成类的初始化后,才执行类的main方法。在链接过程中,可以静态链接(解析),也可以动态链接(解析),下面的图例说明的是动态链接。

转自:http://dryr.blog.163.com/blog/static/5821101320107143513109/

时间: 2024-10-10 02:01:03

JVM调用类的main方法的过程的相关文章

使用Java的反射功能调用类中的方法

最近一直在搞Java的反射,今天使用反射调用方法时出现了很多问题,主要是没有详细参考官方API.所以走了很多弯路. 所以想把这个例子记下来,供自己也供他人学习. package com.mine.practice.reflect; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * 使用反射调用类中的方法 * @author 2014-11-5 上午10:51:28

通过反射 调用 类里面的 方法的方法

通过反射 调用 类里面的 方法的方法(注意 重载 ,可以 按F12转到 定义 查看 ): 错误方法: MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType); dynMethod.Invoke(this, new object[] { methodParams }); 正确 方法 : MethodInfo dynMethod = this.GetType().GetMethod("Draw_&qu

通过反射调用类中的方法

操作步骤: 1:实例化Class: 2:通过Class类的getMethod()方法取得一个Method的对象,并设置次方法操作时所需的参数类型: 3:使用invoke进行调用,并向方法中传递要设置的参数,但在使用invoke()方法时必须传入一个类的实例化对象 实例1:sayChina()方法中没有参数 package cn.itcast02; import java.lang.reflect.Method; //调用Person类中的sayChina()方法,没有参数 public clas

从头认识java-12.6 接口与类型信息(怎么绕过接口直接调用类的所有方法)

这一章节我们来讨论一下接口与类型信息. 在之前的章节里面我们提到接口,父类引用子类对象,然后把方法给缩窄了,但是我们这一章节学习到反射,这个约束就变得没有那么严格. 我们来看看下面的例子: package com.ray.ch11; public class Test { public static void main(String[] args) { Person man = new Man(); man.sleep(); man.run(); // man.say();//error } }

类,main()方法

一.类 1.Java 源文件名必须与类名相同.Java源文件后缀名必须是java; 2.类的内容就是类名后面的一对大括号{}括起来的内容: 二.方法 1.方法也有方法名,有方法内容(方法体即方法的主体).方法体是方法的主要内容. 2.方法必须属于某个类. 3.main()方法是Java程序的入口.当尝试直接运行一个没有main()方法的程序时,Java平台会因为找不到main()方法而抛出错误.

java基础:反射类的main方法

注意到反射main方法跟普通方法有区别: 这是因为jdk设计的问题,jdk1.4版本跟1.5以后的版本设计有区别,如下 Jdk1.4:public Object invoke(Object obj,Object[] args),即按jdk1.4的语法,需要将一个数组作为参数传递给invoke方法时,数组中的每个元素分别对应被调用方法中的一个参数,1.4回去拆分数组中的元素,作为参数. Jdk1.5:public Object invoke(Object obj,Object... args)  

C#如何通过反射调用类下的方法

首先模拟一个mvc的项目,创建一个业务类(HomeService),在类下创建3个方法 public class HomeService { /// <summary> /// 无参方法 /// </summary> /// <returns></returns> public string SayHello() { string str = "你好!"; return str; } /// <summary> /// 有参方

按要求编写Java应用程序: (1)编写西游记人物类(XiYouJiRenWu) 其中属性有:身高(height),名字(name),武器(weapon) 方法有:显示名字(printName),显示武器(printWeapon) (2)在主类的main方法中创建二个对象:zhuBaJie,sunWuKong。并分别为他 们的两个属性(name,weapon)赋值,最后分别调用printName,

package com.hanqi.test; public class xiyoujirenwu { int height; String name; String weapon; xiyoujirenwu(String na,String wp ) { name=na; weapon=wp; } String printName() { return name; } String printWeapon() { return weapon; } } //主类 package com.hanq

.编写Java应用程序。首先,定义一个Print类,它有一个方法void output(int x),如果x的值是1,在控制台打印出大写的英文字母表;如果x的值是2,在 控制台打印出小写的英文字母表。其次,再定义一个主类——TestClass,在主类 的main方法中创建Print类的对象,使用这个对象调用方法output ()来打印出大 小写英文字母表。

package com.homework.zw; //类Print部分 public class Print1 { int x; void output() { if(x==1) { for(int i =65;i<=90;i++) { char a =(char) i; System.out.print(a); } } else if(x==2) { for(int i =97;i<=122;i++) { char a =(char) i; System.out.print(a); } }