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")都不会执行
分享到:
相关推荐
类提供了构造函数用于初始化生日,`printBirthDay`方法打印生日日期,以及`printAge`方法计算并返回年龄。年龄计算是基于当前年份(假设为2017年)减去出生年份。 4. **类和对象的进一步应用**: - `Car`类描述了...
3. **db.sql** - 这个文件很可能包含了数据库脚本,用于创建和初始化系统所依赖的数据表,对理解系统的数据模型和业务逻辑至关重要。 4. **说明文档.txt** - 这里可能包含了项目运行、部署和使用指南,帮助用户快速...
5. **建表SQL文件(hibernate.sql)**:这个文件包含了创建用户表的SQL语句,是数据库初始化的关键。开发者可以通过运行这个文件来设置好项目所需的数据库结构。 6. **zt1803_struts_LoginAndRegister**:这个文件...
- **客户端源码**:《(三)Pushlet框架客户端js-pushlet-client.js分析-初始化分析.htm》对JavaScript客户端库进行了详细解读,特别是初始化过程,这对于前端开发者理解如何集成Pushlet到网页应用至关重要。...
1. **地图初始化**:在Activity或Fragment中加载百度地图SDK,设置地图显示样式和权限请求。 2. **位置监听**:注册位置监听器,获取用户位置更新,并在位置改变时触发相应事件。 3. **HTTP请求构建**:使用...
3. **db.sql**:这可能包含的是数据库脚本,用于初始化和设置系统所需的数据库结构。通过这些SQL语句,可以了解到系统数据模型的设计,包括各表的字段、关系等信息。 4. **说明文档.txt**:这可能是系统使用或部署...
3. **db.sql** - 这个文件可能是数据库脚本,用于创建或初始化系统的数据库结构,包括表、视图、存储过程等。 4. **说明文档.txt** - 该文件可能提供了系统的使用说明、操作指南或者开发者指南,帮助用户理解系统...
- `<jsp:useBean id="testInq" scope="page" class="ymbean.opDb"/>`: 创建并初始化一个名为 `testInq` 的 JavaBean,该 Bean 属于 `ymbean.opDb` 类。 - **Java 代码片段**:用于处理逻辑和数据库操作的部分,例如...
然后在Activity中初始化底部导航条,并为其设置点击事件监听器。点击事件发生时,根据被点击的导航项,动态地替换或添加对应的Fragment。为了确保流畅的切换效果,可以使用`FragmentManager`的`beginTransaction()`...
在主活动中,初始化`ViewPager`和`TabLayout`,并将适配器设置给`ViewPager`: ```java public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private TabLayout tabLayout; @...