`
dev_liu
  • 浏览: 112068 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

java初始化研究(zt)

阅读更多
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")都不会执行
分享到:
评论

相关推荐

    java试题知识点.pdf

    类提供了构造函数用于初始化生日,`printBirthDay`方法打印生日日期,以及`printAge`方法计算并返回年龄。年龄计算是基于当前年份(假设为2017年)减去出生年份。 4. **类和对象的进一步应用**: - `Car`类描述了...

    课设毕设springboot基于springboot的大创管理系统-LW+源码可运行.zip

    3. **db.sql** - 这个文件很可能包含了数据库脚本,用于创建和初始化系统所依赖的数据表,对理解系统的数据模型和业务逻辑至关重要。 4. **说明文档.txt** - 这里可能包含了项目运行、部署和使用指南,帮助用户快速...

    jsp+hibernate+struts2简单登录和注册

    5. **建表SQL文件(hibernate.sql)**:这个文件包含了创建用户表的SQL语句,是数据库初始化的关键。开发者可以通过运行这个文件来设置好项目所需的数据库结构。 6. **zt1803_struts_LoginAndRegister**:这个文件...

    pushlet的笔记

    - **客户端源码**:《(三)Pushlet框架客户端js-pushlet-client.js分析-初始化分析.htm》对JavaScript客户端库进行了详细解读,特别是初始化过程,这对于前端开发者理解如何集成Pushlet到网页应用至关重要。...

    baidumap httpclient

    1. **地图初始化**:在Activity或Fragment中加载百度地图SDK,设置地图显示样式和权限请求。 2. **位置监听**:注册位置监听器,获取用户位置更新,并在位置改变时触发相应事件。 3. **HTTP请求构建**:使用...

    基于Springboot的大创管理系统

    3. **db.sql**:这可能包含的是数据库脚本,用于初始化和设置系统所需的数据库结构。通过这些SQL语句,可以了解到系统数据模型的设计,包括各表的字段、关系等信息。 4. **说明文档.txt**:这可能是系统使用或部署...

    springboot070基于springboot的大创管理系统.zip

    3. **db.sql** - 这个文件可能是数据库脚本,用于创建或初始化系统的数据库结构,包括表、视图、存储过程等。 4. **说明文档.txt** - 该文件可能提供了系统的使用说明、操作指南或者开发者指南,帮助用户理解系统...

    简单jsp留言板程序

    - `<jsp:useBean id="testInq" scope="page" class="ymbean.opDb"/>`: 创建并初始化一个名为 `testInq` 的 JavaBean,该 Bean 属于 `ymbean.opDb` 类。 - **Java 代码片段**:用于处理逻辑和数据库操作的部分,例如...

    底部导航条

    然后在Activity中初始化底部导航条,并为其设置点击事件监听器。点击事件发生时,根据被点击的导航项,动态地替换或添加对应的Fragment。为了确保流畅的切换效果,可以使用`FragmentManager`的`beginTransaction()`...

    Android 选项卡

    在主活动中,初始化`ViewPager`和`TabLayout`,并将适配器设置给`ViewPager`: ```java public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private TabLayout tabLayout; @...

Global site tag (gtag.js) - Google Analytics