在Java中,对于静态变量,静态初始化块,变量,初始化块,构造器,初始化顺序是(静态变量,静态初始化块)>(变量,初始化块)>构造器。括号中是并列的,那个先出现,先初始化那个。通过一下程序测试:
public class InitialOrderTest {
//静态变量
public static String staticField="静态变量";
//变量
public String field="变量";
//静态初始化块
static{
System.out.println(staticField);
System.out.println("静态初始化块");
}
//初始化块
{
System.out.println(field);
System.out.println("初始化块");
}
//构造器
public InitialOrderTest(){
System.out.println("构造器");
}
public static void main(String[] args) {
new InitialOrderTest();
}
}
运行结果是:
静态变量
静态初始化块
变量
初始化块
构造器
在继承情况下,用一下代码测试:
class Parent{
//静态变量
public static String p_StaticFied="父类--静态变量";
//变量
public String p_Field="父类--变量";
//静态初始化块
static{
System.out.println(p_StaticFied);
System.out.println("父类--静态初始化块");
}
//初始化块
{
System.out.println(p_Field);
System.out.println("父类--初始化块");
}
public Parent(){
System.out.println("父类--构造器");
}
}
public class SubClass extends Parent{
// 静态变量
public static String s_StaticFied="子类--静态变量";
//变量
public String s_Field="子类--变量";
//静态初始化块
static{
System.out.println(s_StaticFied);
System.out.println("子类--静态初始化块");
}
//初始化块
{
System.out.println(s_Field);
System.out.println("子类--初始化块");
}
public SubClass(){
System.out.println("子类--构造器");
}
public static void main(String[] args) {
new SubClass();
}
}
结果为:
父类--静态变量
父类--静态初始化块
子类--静态变量
子类--静态初始化块
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器
由此可知,并不是父类初始化完后子类才初始化,父类的变量,初始化块,构造器会晚于子类的静态变量,静态初始化块。
环境变量的设置:
新建系统变量JAVA_HOME:C:\Program Files\Java\jdk1.5.0_06
新建系统变量CLASSPATH:.;%JAVA_HOME%\lib;(注意:点号表示当前目录,不能省略)
在系统变量Path的值的前面加入以下内容:%JAVA_HOME%\bin;(注意:这里的分号不能省略)
JAVA_HOME=/opt/aspire/product/midportal/jdk1.6.0_20
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
CLASSPATH=.;$JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar
JRE_HOME=$JAVA_HOME/jre
export LANG=zh_CN.GBK
export PATH
export CLASSPATH
export JRE_HOME
.bash_profile
分享到:
相关推荐
详细讲解java类中静态变量,普通标量,对象、基本类型的初始化顺序。
介绍一下java程序初始化的顺序,这会对您以后的开发所有帮助
所有代码块是从上往下顺序执行的,所以代码块里面使用到的变量如果在块下面初始化会有问题 执行构造方法中内容。 所以看见的空构造方法,只能说第三部没有需要执行的内容。 下面举例子 public class TestClass { ...
对java类初始化以及顺序,详解,由于转载仅供大家参考!
具体内容见博客
一个java代码初始化具体过程的的demo
java面试题-类的初始化顺序.doc 大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,...
本篇文章主要介绍了Spring 中如何控制2个bean中的初始化顺序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Java初始化顺序1
Java 的初始化问题和其他高级语言类似。一个明显不一样的地方是体现在它的类加 载过程。传统的编程语言包括C++等,程序是作为启动过程的一部分立刻被加载,而Java 的 类加载只在需要使用程序代码时才会被加载(每个...
“礼让”原则学习Java对象初始化顺序
详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序
作为一名程序员必须知道Java初始化顺序......
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
介绍java对象的创建、初始化、和引用。并分析一下JAVA中对象创建和初始化过程中涉及的相关概念问题。
类的初始化顺序,适用于任何一种面向对象的语言。真正了解面向对象的程序的流程。配有实例
JAVA面试题解惑系列(一)——类的初始化顺序-JAVA程序员JAVA工程师面试必看
java类中静态域、块,非静态域、块,构造函数的初始化顺序,通过本例子,能够清楚了解到java类的初始化顺序