Java学习之神奇的初始化

原创 2004年07月06日 12:24:00
作者: yjwgeg
Friday, March 5 2004 9:50 AM

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

cn_336_280.swf cn_336_280.swf code;sz=1x1;ord=1430526204?

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")都不会执行。另外,留个小问题,如果去掉了System.out.println("hello")外的括号会怎么样呢?

数学之美番外篇:平凡而又神奇的贝叶斯方法(余下全文)——刘未鹏

4. 无处不在的贝叶斯 以下我们再举一些实际例子来说明贝叶斯方法被运用的普遍性,这里主要集中在机器学习方面,因为我不是学经济的,否则还可以找到一堆经济学的例子。 4.1 中文分词 贝叶斯是机器学...
  • masikkk
  • masikkk
  • 2012年09月21日 16:22
  • 3950

步步为营(十五)搜索(一)DFS 深度优先搜索

前方大坑预警!先讲讲什么是搜索吧。有一天你去一个果园摘梨子,果农告诉你,有一棵树上有一个金子做的梨子,找到就是你的,你该怎么找? 地图如下: S 0 0 0 0 0 0 0 0 0 0 0 0...
  • youqi1shi
  • youqi1shi
  • 2015年07月30日 16:47
  • 639

SDUT 3468 广度优先搜索练习之神奇的电梯

点击打开题目链接 #include using namespace std; struct edge { int num; int step; }; int n, m, q...
  • zhidetian
  • zhidetian
  • 2016年08月11日 21:16
  • 363

NOIP2015Day1T1神奇的幻方 解题报告

原题见洛谷(https://www.luogu.org/problem/show?pid=2615) 题目描述幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行、每列及两条对...
  • a1351937368
  • a1351937368
  • 2017年07月30日 00:41
  • 318

acm-sdut-深度优先搜索练习之神奇的矩环

山东理工大学oj题解
  • sdut16szq
  • sdut16szq
  • 2017年03月29日 23:53
  • 235

深度优先搜索练习之神奇的矩环

think: 1感觉自己用的不是深度优先搜索啊,——话落即发现如何判错自己的代码,人果然还是否定自己比较容易..无语啊sdut原题链接深度优先搜索练习之神奇的矩环 Time Limit: 1000...
  • BlessingXRY
  • BlessingXRY
  • 2017年02月16日 21:42
  • 246

sdut 3469 深度优先搜索练习之神奇的矩环(DFS)

深度优先搜索练习之神奇的矩环 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 小鑫的女朋友被魔王抢走了! 魔王留给小鑫一张...
  • a15110103117
  • a15110103117
  • 2016年06月23日 10:28
  • 427

[SDUT](3469)深度优先搜索练习之神奇的矩环 ---DFS(图)

深度优先搜索练习之神奇的矩环 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descript...
  • m0_37624640
  • m0_37624640
  • 2017年08月11日 19:31
  • 103

神奇数-Java-牛客模拟三

package 模拟三; import java.util.ArrayList; import java.util.Scanner; /** * 题目描述:给出一个区间[a, b],计算区间内“...
  • qq_30507287
  • qq_30507287
  • 2017年05月26日 21:38
  • 638

新神奇传说三1.10升级补丁及番外篇破解

感谢逝去的TGL为我们留下那在遥远的大陆的回忆。by 小宝版本说明新神奇传说3 繁体中文版 1.03 升级补丁包含的内容有「世界碎片(白)」的EP回复量修正成30修正取消使用特技时游标会消失的错误修正...
  • leexuany
  • leexuany
  • 2009年05月01日 10:39
  • 11513
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java学习之神奇的初始化
举报原因:
原因补充:

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