首先明确,变量初始化是在任何方法(包括构造器)被调用之前进行的。

1、实例变量的初始化

  实例变量只有当它所属的类实例化后才会存在,构造器被执行就意味着对象就被创建。

1.1、指定初始化。

class Dog
{
  Dog(){
    System.out.println("Constructor is coming!");
  }

  String a = "dog's name is Lily.";
  String b = "dog's attribute is big.";

}

1.2、构造器初始化。

class Dog
{

  String a;

  String b;
  Dog(){

    a = "dog's name is Lily.";
    b = "dog's attribute is big.";
    System.out.println("Constructor is coming!");
  }

}

显然,构造器初始化方法,能够保证初始值必为构造器中的设定值(构造器初始化后于指定初始化及实例代码块初始化);

1.3、实例代码块初始化。

class Dog
{
  Dog(){
    System.out.println("Constructor is coming!");
  }

  String a;
  String b;
  {
    a = "dog's name is Lily.";
    b = "dog's attribute is big.";

    System.out.println(a);
    System.out.println(b);
  }

  Dog(int a){
    System.out.println("Constructor "+a+" is coming!");
  }

  public static void main(String args[]){
    Dog dog = new Dog();
  }
}

实例代码块初始化中,变量定义和赋值语句位置可以颠倒。按笔者水平看来,代码块初始化和指定初始化并无区别,都先于构造器之前被执行,并都是按定义的先后顺序来决定初始化的先后顺序。

2.静态数据的初始化

静态是相对于内存而言的,静态变量仅初始化一次,并且只有在必要时刻才会被初始化。

指定初始化和静态块代码初始化与非静态变量类似,同样的执行优先级,这里不再细分。构造器初始化与非静态变量相同,不在赘述。

class Dog
{
  Dog(){
  System.out.println("Constructor is coming!");
}

  String a1;
  String b1;
  {  
    a1 = "The dog is not static.";
    b1 = "The dog's name is Jack.";
    System.out.println(a1);
    System.out.println(b1);
  }

  static String b;
  static String a = "dsada";
  static {
    a = "dog's name is Lily.";
    b = "dog's attribute is big.";
    System.out.println(a);
    System.out.println(b);
  }

  Dog(int a){
    System.out.println("Constructor "+a+" is coming!");
  }

  public static void main(String args[]){
    Dog dog = new Dog(666);
  }
}

3.总结

初始化顺序为,父类先于子类,静态数据先于非静态数据,构造器初始化总在最后。

java初探之初始化的更多相关文章

  1. Java继承的初始化

    /** * Created by xfyou on 2016/11/2. * Java继承的初始化 */ public class Beetle extends Insect { int k = pr ...

  2. JAVA字段的初始化规律

    JAVA字段的初始化规律 1.类的构造方法 (1)“构造方法”,也称为“构造函数”,当创建一个对象时,它的构造方法会被自动调用.构造方法与类名相同,没有返回值. (2)如果类没有定义构造函数,Java ...

  3. Java 类加载与初始化

    Java系列笔记(1) - Java 类加载与初始化 目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理 ...

  4. java类的初始化

    转载:http://blog.csdn.net/moreevan/article/details/6968718 我们知道一个类(class)要被使用必须经过装载,连接,初始化这样的过程.下面先对这三 ...

  5. [转]java static final 初始化

    http://tanbing1986411.blog.163.com/blog/static/7259798220103610224434/ java static final 初始化 1.stati ...

  6. 【转载】Java系列笔记(1) - Java 类加载与初始化

    Java系列笔记(1) - Java 类加载与初始化 原文地址:http://www.cnblogs.com/zhguang/p/3154584.html 目录 类加载器 动态加载 链接 初始化 示例 ...

  7. 图示Java类的初始化顺序

    Java类的初始化顺序   在开发中,知道Java类的初始化顺序才能让我们更加清楚地掌握程序的执行流程.先把结论贴出来,Java里,从图里的1~6,分别按顺序执行.   以下为代码验证阶段,一共三个类 ...

  8. 【软件构造】-<笔记>-浅谈java中类的初始化过程

    编写java程序时,每创建一个新的对象,都会对对象的内容进行初始化. 每一个类的方法中的局部变量都有严格的初始化要求,因此假如写出下面的程序: void f(){ int i; i++; } 编译时就 ...

  9. java创建对象 的初始化顺序

    java创建对象 的初始化顺序 1.初始化块 初始化块通常写在类的构造方法之前,由花括号括起来,通常包含对成员属性进行初始化的语句: 初始化块分为instance初始化块和static初始化块,初始化 ...

随机推荐

  1. 使用ubuntu自带的Remmina Remote Desktop Client远程登录服务器配置

    1.配置:点击new , 配置服务器ip地址.名称.密码 2.打开本机终端执行一下命令: echo xfce4-session>.session echo xfce4-session>.x ...

  2. poj1734Sightseeing trip——无向图求最小环

    题目:http://poj.org/problem?id=1734 无向图求最小环,用floyd: 在每个k点更新f[i][j]之前,以k点作为直接连到i,j组成一个环的点,这样找一下最小环: 注意必 ...

  3. tyvj1061移动服务——DP

    题目:http://www.joyoi.cn/problem/tyvj-1061 DP记录状态为当前任务时不在此任务位置上的两个人的位置(因为一定有一个人在此任务位置上): 不妨设初始位置p[0]=3 ...

  4. ffmpeg 合并文件

    ffmpeg文件合并   文件1.ts~ 100.ts 流媒体文件1.txt 格式 file .ts file .ts ... file .ts 命 令   (-vcodec copy -acodec ...

  5. Scala Beginner

    开始学习Scala,下面的内容大部分从Scala官网翻译过来,有几个地方翻译的不是很好,表述不清楚的地方大家可以浏览Scala官网,多指教. Scala offical website is http ...

  6. npm下载模块提速方法

    通过config配置指向国内镜像源,命令如下 npm config set registry https://registry.npm.taobao.org 然后可以查看是否配置成功 npm conf ...

  7. POJ-3176

    Cow Bowling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19864   Accepted: 13172 Des ...

  8. sorted matrix - search & find-k-th

    sorted matrix ( Young Matrix ) search for a given value in the matrix: 1) starting from upper-right ...

  9. linux忘记登陆密码的两种破解办法

    对于使用grub引导的linux系统.在开机自检后,出现grub引导界面时,按E键进入编辑模式,如下图所示:   把光标移到带有“kernel”字样的那一行,然后按E键编辑,如图:   在末尾按一个空 ...

  10. 2. DVWA亲测文件包含漏洞

    Low级:     我们分别点击这几个file.php文件 仅仅是配置参数的变化: http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file3.php 如 ...