定义实例变量时指定的初始值、初始化块中为实例变量指定的初始值、构造器中为实例变量指定的初始值,三者的作用完全类似,都用于对实例变量指定初始值。经过编译器处理之后,它们对应的赋值语句都被合并到构造器中。在合并过程中,定义变量语句转换得到的赋值语句、初始化块里的语句转换得到的赋值语句,总是位于构造器的所有语句之前;合并后,两种赋值语句的顺序保持它们在源代码中的顺序。
例1:
package com.study.test;

class Cat {
    String name;
    int age;
    
    //构造函数
    public Cat(String name,int age){
        System.out.println("执行构造器");
        this.name = name;
        this.age = age;
    }
    
    {
        System.out.println("执行非静态初始化块");
        weight = 2.0;
    }
    double weight = 2.3;
    
    public String toString(){
        
        return "Cat[name=" + name + ",age=" + age + ",weight=" + weight + "]";
    }
}

public class InitTest {
    
    public static void main(String[] args) {
        Cat cat = new Cat("kitty", 2);
        System.out.println(cat);
        
        Cat cat2 = new Cat("Jerfield", 3);
        System.out.println(cat2);

}

}

输出为:
执行非静态初始化块
执行构造器
Cat[name=kitty,age=2,weight=2.3]
执行非静态初始化块
执行构造器
Cat[name=Jerfield,age=3,weight=2.3]

例2:
package com.study.test;

class Cat {
    String name;
    int age;
    
    //构造函数
    public Cat(String name,int age){
        System.out.println("执行构造器");
        this.name = name;
        this.age = age;
    }
    
    
    double weight = 2.3;
    {
        System.out.println("执行非静态初始化块");
        weight = 2.0;
    }
    public String toString(){
        
        return "Cat[name=" + name + ",age=" + age + ",weight=" + weight + "]";
    }
}

public class InitTest {
    
    public static void main(String[] args) {
        Cat cat = new Cat("kitty", 2);
        System.out.println(cat);
        
        Cat cat2 = new Cat("Jerfield", 3);
        System.out.println(cat2);

}

}

输出:
执行非静态初始化块
执行构造器
Cat[name=kitty,age=2,weight=2.0]
执行非静态初始化块
执行构造器
Cat[name=Jerfield,age=3,weight=2.0]

Java中定义实例变量时指定初始化值顺序相关推荐

  1. java中的实例变量

    简介 在类的声明中,属性是用变量来表示的.这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的.类的每个对象维护它自己的一份实例变量的副本. java中的实例变量 含义: 实例变量 ...

  2. java中定义类头的修饰符,JAVA中定义类头时能使用的修饰符是什么

    满意答案 壹壹8623000 2013.06.16 采纳率:47%    等级:12 已帮助:9954人 1.public 使用对象:类.接口.成员 介绍:无论它所处在的包定义在哪,该类(接口.成员) ...

  3. java 中定义整形变量_智慧职教: 在Java语言中,一条语句可以定义多个变量。例如int a; b;就定义了两个整型变量a 和b。...

    智慧职教: 在Java语言中,一条语句可以定义多个变量.例如int a: b:就定义了两个整型变量a 和b. 答:0 "物的依赖性关系"是( ) 答:资本主义社会之中的人与人之间的 ...

  4. java 初始化块_详解Java中的实例初始化块(IIB)

    在 Java 语言中的类初始化块 文章中我们简单的介绍了下 Java 中的实例初始化块 ( IIB ).不过我觉得介绍的有点简单了,于是,再写一篇文章详细介绍下吧. Java 语言中,存在三种操作:方 ...

  5. 【Groovy】Groovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )

    文章目录 前言 一.Groovy 动态语言 二.Groovy 中的变量自动类型推断及动态调用 三.Java 中必须为变量指定其类型 前言 Groovy 是动态语言 , Java 是静态语言 ; 一.G ...

  6. 【C 语言】结构体 ( 结构体类型变量初始化 | 定义变量时进行初始化 | 定义隐式结构体时声明变量并初始化 | 定义普通结构体时声明变量并初始化 )

    文章目录 一.结构体类型变量初始化 1.定义变量时进行初始化 2.定义普通结构体时声明变量并初始化 3.定义隐式结构体时声明变量并初始化 二.完整代码示例 一.结构体类型变量初始化 1.定义变量时进行 ...

  7. Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积。 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法。

    Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积. 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法, ...

  8. 初始化器 java_来说说Java中的实例初始化器

    原标题:来说说Java中的实例初始化器 (点击上方公众号,可快速关注) 英文:programcreek 译文:strongme 链接:http://www.importnew.com/12893.ht ...

  9. java中的static变量初始化_Java初始化静态变量的时间顺序

    1. 开始吧! 今天,我们来探讨交流下静态变量初始化过程.Java虚拟机在类加载期间也同样遵循这个过程. 2. 初始化过程 在较高的层次上,JVM执行以下步骤: 首先,加载并链接类.然后,这个过程的& ...

最新文章

  1. python三大神器_Python之旅:Python上古三大神器之一PIP①
  2. iOS开发中使用[[UIApplication sharedApplication] openURL:]加载其它应用
  3. C#中的构造方法与对象初始化器
  4. VTK:正态估计用法实战
  5. 一段人人都应该知道的从Vue到React的过渡史
  6. linux系统 个人使用情况,个人使用Linux操作系统常要做的事
  7. css图片的全屏显示代码-css3
  8. linux新建samba账户,ubuntu上创建账户和samba用户
  9. 一文透析 Spring Boot、微服务架构和大数据治理三者之间的故事
  10. 大华工业相机使用说明_大华C900系列SSD | 极速传输,不负美名
  11. [转]c# winform tcp connect timeout 连接超时设置
  12. 外卖侠使用教程加体验地址
  13. 数据库表中的数据显示在网页上
  14. [BZOJ3144]切糕
  15. 83 项开源视觉 SLAM 方案够你用了吗?
  16. poj1392 Ouroboros Snake 欧拉回路
  17. jQuery 上拉加载更多
  18. b站视频素材哪里找?怎么找b站素材?
  19. C语言文件输入输出函数总结
  20. matlab差商chaS,牛顿插值MATLAB算法.doc

热门文章

  1. 数据库原理与应用(SQL Server)笔记 第一章 数据定义语言和数据操纵语言
  2. websocket binary 数据解析_WebSocket实现原理相关知识点
  3. android ui布局适配,Android适配全面总结(一)----屏幕适配
  4. OpenStack的部署T版(六)——Neutron组件
  5. Android textview字体颜色显示和图片显示
  6. 申通快递机器人上岗_申通快速分拣机器人未来有70%人会失业
  7. c语言 艺术编程,C语言编程艺术--条件编译(原创)
  8. HTML怎么限制每行字数,JS实现每行固定字数,自动换行
  9. flatform installer web 安装php_Windows server 2019 安装 IIS PHP 环境无标题笔记
  10. java自定义表单系统_表单识别:自定义表单模板无需额外定制