zoukankan      html  css  js  c++  java
  • Java中变量、类初始化顺序

    类中声明的静态变量在递归调用中的值不会发生变化,但是对于非静态变量递归过程中会发生变化,初始化为0

    static声明的为类变量,而非static声明的为实例变量

    (byte,short,char)-int-long-float-double:

    低级到高级自动类型转换,高级到低级需要强制转换,包装类型过滤类型能够转换;

    对于java的变量,我们知道有成员变量和局部变量。

    关于他们的初始化,基本上所有书上都会写。成员变量,java会帮助你初始化,局部变量,则需要程序员自己初始化。

    对于类的成员变量。不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值

    规则为:

    1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。

    2、单精度浮点型(float)的基本类型变量的默认值为0.0f。

    3、双精度浮点型(double)的基本类型变量的默认值为0.0d。

    4、字符型(char)的基本类型变量的默认为 “/u0000”。

    5、布尔性的基本类型变量的默认值为 false

    6、引用类型的变量是默认值为 null。

    7、数组引用类型的变量的默认值为 null。春关键数组变量的实例后,如果没有没有显示的为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值。

    局部变量初始化

    局部变量声明以后,Java 虚拟机不会自动的为它初始化为默认值。因此对于局部变量,必须先经过显示的初始化,才能使用它。

    如果编译器确认一个局部变量在使用之前可能没有被初始化,编译器将报错。

    用几句话概括下初始化顺序规则(假设调用方式类似于上面代码,即使用 new 操作符 ):

    1. static 先于 non-static, non-static 先于 constructor。这里的 static 统指 static field 和 static initialization block 两种初始化方式,non-static 同上。
    2. static 初始化代码按照在源代码中定义的顺序从上往下以此执行,non-static 同上。
    3. 存在继承关系时,优先执行基类中的初始化语句
  • 相关阅读:
    使用 kubeadm 部署 v1.18.5 版本 Kubernetes 集群
    MHA高可用主从复制实现
    基于Keepalived高可用集群的MariaDB读写分离机制实现
    MariaDB主从半同步复制详解
    postman学习网址
    程序员的脑子是更新换代最快的
    带组装3ROS_1节点_192通道
    带组装4ROS_1节点_256通道
    带组装5ROS_1node_320Chan
    带组装7ROS_1节点_448通道
  • 原文地址:https://www.cnblogs.com/csxf/p/3489198.html
Copyright © 2011-2022 走看看