java初始化研究(zt)

转载 2007年10月02日 00:24:00
java在初始化的时候也有很多讲究,因为java中出现了类,所以在初始化的时候就有可能使用到创建新对象,所以,对于初始化的顺序要求的比较严格,请 看下面一个程序,是thinking in java中的一个程序,被我稍加改编,这样可以更好的说明几个初始化的要点:



class Cup

{

Cup(int marker)

{

System.out.println("Cup(" + marker + ")");

}

void f(int marker)

{

System.out.println("f(" + marker + ")");

}

}



class Cups

{

static Cup c1=new Cup(1);

Cup c3=new Cup(3);

static Cup c2= new Cup(2);

Cups()

{

System.out.println("Cups()");

}

Cup c4=new Cup(4);

}



public class ExplicitStatic

{

Cups c=new Cups();

{

System.out.println("Hello");

}

public static void main(String[] args)

{

System.out.println("Inside main()");

Cups.c1.f(99);

ExplicitStatic x=new ExplicitStatic();

}

static Cups x = new Cups();

}

大家可以手动执行一下这个程序,考虑一下结果是什么,然后参照下面的答案对照一下,看看是否正确:



Cup(1)

Cup(2)

Cup(3)

Cup(4)

Cups()

Inside main()

f(99)

Cup(3)

Cup(4)

Cups()

Hello

四个初始化的要点,如下:

1、如果有static,即静态成员定义,首先初始化static的变量,如,在类Cups中c3在c2前面,可是在输出的结果中,你可以发现,c2是在c3前执行的,这就是因为,所有的static都在第一时间被初始化。

2、Static只初始化一次,在第二次创建类的对象的时候,就不会去执行static的语句,如,在第二次执行new Cups()的时候,就只输出了Cup(3)和Cup(4),显然,static的两个创建对象的语句没有做。

3、变量的初始化在方法前。如,在Cups类中,方法Cups()在语句Cup c4=new Cup(4)之前,可是输出结果的时候,打印的Cups()却在Cup(4)之后。

4、在含有main的类中执行顺序是先做static,然后就是main,而不是像其它类一样,除了static就按顺序做下来。如,在main函数中, 如果去掉语句ExplicitStatic x=new ExplicitStatic(),则Cups c=new Cups()和System.out.println("hello")都不会执行 

[ZT]关于CAD启动时自动加载程序的研究(转)

CAD文件加载顺序:uacad2006.lsp (AutoCAD使用)uacad.rx (用户自定义的*.arx文件加载清单)注:在CAD2006中,由错误提示怀疑:*.arx文件检测先于acad20...

[zt] 初学java多线程

初学Java多线程:线程简介一、线程概述线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个...
  • pisheng
  • pisheng
  • 2011年03月17日 13:13
  • 386

[zt]Java容器集合学习心得

在Java中有许多的容器集合。初一看起来有些糊涂,特别是对刚接触Java来说(至少我当初就是这样的)!其实稍微细心,深入一点点就会发现原来一切都是有规律的。我想别的事情也会是如此。        J...
  • l2cool
  • l2cool
  • 2012年08月10日 14:52
  • 176

[zt] Java与C++区别

C++和JAVA的区别JAVA和C++的区别介绍框架纲领如下:(一) 序言:(二) 我学习二者的个人感受:(三) 个人建议:(四) 用JAVA中继承的特性来描述C++和JAVA的关系图示:(五) JA...
  • pisheng
  • pisheng
  • 2011年07月16日 05:04
  • 917

ZT--Android* System-Level Java*/C++ Code Debugging

Android system code debug, very good.

[zt]java中Map类有什么作用,具体怎么用呢??

问题: java中Map类有什么作用,具体怎么用呢?? 回答: Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象。         Map的接口   ...
  • l2cool
  • l2cool
  • 2012年08月10日 14:38
  • 520

[zt] Java与C/C++的区别

http://liva-zheng.javaeye.com/blog/681214首先应该清楚,Java是由C++发展而来的,它保留了c++的大部分内容,类似于c++, 但句法更清晰,规模更小,更易学...
  • pisheng
  • pisheng
  • 2011年02月23日 09:43
  • 175

ZT java里的this关键字概述

一、this关键字主要有三个应用: (1)this调用本类中的属性,也就是类中的成员变量; (2)this调用本类中的其他方法; (3)this调用本类中的其他构造方法,调用时要放在构造方法的首...

(ZT)Java中equals和==的区别

转自http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html java中的数据类型,可分为两类: 1.基本数据类型,也称原始...

[zt] java中super 的两种用法

http://hi.baidu.com/danghj/blog/item/8d34673ed2a07f3770cf6cb3.html 通过用static来定义方法或成员,为我们编程提供了某种便利,从某...
  • pisheng
  • pisheng
  • 2011年03月20日 14:45
  • 173
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: java初始化研究(zt)
举报原因:
原因补充:

(最多只允许输入30个字)