java的运行流程

2016-02-19 17:04 11 1 收藏

今天图老师小编给大家精心推荐个java的运行流程教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - 编程语言 】

  一,我们所看不到的:

  1,如果java文件没有package,就默认给文件加上"无名"package;

  2,默认导入java.lang包,所以我们的java程序中可以使用Sting,Math,Integer等类,包括一些异常类;

  3,如果生成的类没有父类,则为这个类隐式加上父类:Object;因此,包括Object中的许多方法可以使用;

  4,字段的初始化;

  二,我们所看的到的:

  既然看的到,就先看程序运行结果:

  

public class JRun1 {
public JRun1() {
System.out.println(" 构造函数");
}
static
{
System.out.println("static{}");
}
{
System.out.println("{}");
}
public static void main(String[] args) {
System.out.println("main()");
}
}

  运行结果:

  static{}

  main()

  显然,程序运行时,先运行:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  

static
{
System.out.println("static{}");
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  再调用main();

  注意: 我们可以得到一个副产品:不用main方法也能运行的程序:

  

public class JRun1 {
static
{
System.out.println("no main()");
System.exit(0);
}
}

  如果我们在类中建立一个对象:

  

public class JRun1 {
public JRun1() {
System.out.println(" 构造函数");
}
static
{
System.out.println("static{}");
}
{
System.out.println("{}");
}
public static void main(String[] args) {
System.out.println("main()");
new JRun1();
}
}

  运行结果:

  static{}

  main()

  {}

  构造函数

  从而,我们得出:

  建立一个非主类对象,顺序为:静态初始化块static{}--初始化块{}--构造函数constructor;

  那么,牵涉到继承,运行流程又如何?

  看程序:

  

class JRun1Father{
JRun1Father(){
System.out.println("父类构造函数");
}
static{
System.out.println("父类静态初始化块");
}
{
System.out.println("父类初始化块");
}
}
public class JRun1 extends JRun1Father{
public JRun1() {
System.out.println("子类构造函数");
}
static
{
System.out.println("子类静态初始化块");
}
{
System.out.println("子类初始化块");
}
public static void main(String[] args) {
//System.out.println("主方法)");
new JRun1();
}
}

  运行结果:

  父类静态初始化块

  子类静态初始化块

  父类初始化块

  父类构造函数

  子类初始化块

  子类构造函数

  所以,牵涉到父类:父静态--子静态--父初始化及构造--子初始化及构造;

  注意:初始化块和构造是接连运行的,不会父类子类交替.

来源:http://www.tulaoshi.com/n/20160219/1614069.html

延伸阅读
在这里我谈谈我在学习j2ee流程,并谈到在此过程中领会的经验和教训。以便后来者少走弯路。 Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE。这三块相互补充,应用范围不同。 J2SE就是Java2的标准版,主要用于桌面应用软件的编程; J2ME主要应用于嵌入是系统开发,如手机和PDA的编程; J2EE是Java2的企业版,...
标签: Web开发
1、md5加密,该加密算法是单向加密,即加密的数据不能再通过解密还原。相关类包含在java.security.MessageDigest包中。 2、3-DES加密,该加密算法是可逆的,解密方可以通过与加密方约定的密钥匙进行解密。相关类包含在javax.crypto.*包中。 3、base64编码,是用于传输8bit字节代码最常用的编码方式。相关类在sun.misc.BASE64Decoder 和sun.mis...
标签: Web开发
程序全文如下:  代码如下: package com.neusoft.test.util.crypt; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.security.MessageDigest; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.cr...
最近发现一个问题,有时候对一个Android项目反复的Add jar和remove jar,发现编译可以通过,但是运行起来当应用到外部jar的对象时,会抛出java.lang.NoClassDefFoundError异常。导致程序奔溃。 查看项目属性,发现java build path里比正常的项目少了Android Dependencies这一项: 通过和丢失之前的项目进行比对,发现差别在于工程根目录下...
我们经常在项目中使用继承,但是往往不太明白,程序运行的顺序以及原理,尤其是使用上转型对象的时候,以及父类子类中都有static变量和方法时,不知道先运行谁。我也是写了一个例子。总结了一下。 代码如下: 父类: public class TestStatic {     public static String name="china";     {   &...

经验教程

356

收藏

25
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部