java成员变量的初始化

Wesley13
• 阅读 769

类变量(static变量,不需要实例化对象也可以引用)
实例变量(非static变量,需要实例化对象)
局部变量(类的成员函数中的变量)

初始化方式:
构造函数初始化
变量声明时初始化
代码块初始化
java自动初始化(在构造函数执行之前执行)  

java保证所有变量被使用之前都是经过初始化的(声明并且定义过,被赋值过).
静态数据成员只有第一次被使用的时候会被初始化,其他时间都不会再执行初始化.

静态成员变量和静态代码块的执行
编译器在解析一个类定义的时候,会先去搜集所有相关成员变量的相关的语句.
确定当前变量是否被声明(这个时候不会去定义,不会初始化,包括自动初始化).
然后按照代码的先后顺序,依次执行相关语句,对变量进行赋值操作.
静态变量和静态代码块的执行优先于非静态成员变量和非静态代码块.

非静态成员变量和非静态代码块的执行
与静态成员变量和静态代码块的初始化方式一样.
只有在类实例化的时候才会执行非静态成员变量和非静态代码块.
构造函数的执行在变量自动初始化和代码块之后,构造函数赋值之前,变量已经被代码块赋值或者已经被声明时初始化.

继承类的初始化
父类的构造函数,先于子类的非静态代码块执行.
先执行静态代码,再执行非静态代码,然后执行构造函数.
先实例化父类成员,再实例化子类成员.

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java常用类(2)
三、时间处理相关类Date类:计算机世界把1970年1月1号定为基准时间,每个度量单位是毫秒(1秒的千分之一),用long类型的变量表示时间。Date分配Date对象并初始化对象,以表示自从标准基准时间(称为“历元”(epoch),即1970年1月1日08:00:00GMT)以来的指定毫秒数。示例:packagecn.tanjian
Wesley13 Wesley13
3年前
java实例化
初始化块实际上,初始化块是一个假象,使用javac命令编译java类后,初始化块会消失,初始化代码被还原到每个构造器中代码的最前面在实例化的过程中:前面的初始化块先执行,后面的后执行初始化块的修饰符只能是static普通初始化块负责对对象执行初始化,静态初始化块负责对类执行初始化初始化块只在创建
Wesley13 Wesley13
3年前
java中static的作用详解
java中static关键字表示静态的意思,主要用于以下三点,static成员变量,static成员方法和static块。在类中如果定义了static类型的对象(变量或者方法),在java虚拟机(JVM)加载类时,该对象就会被实例化,在使用的时候就不需要再去实例化,直接调用就可以了。常与private,public搭配使用。下面详细说一下这三部分。1
浪人 浪人
3年前
深入不可变类 -- 谈谈Java String与包装类的底层实现
深入不可变类——谈谈String与包装类的底层实现一、走进不可变类不可变类是指在创建实例后该例变量不可以改变的类。比如String类和包装类。定义不可变类需要遵守:1.成员变量设置为priavte,final修饰2.提供带参构造器对成员变量进行初始化3.只提供getter,
xiguaapp xiguaapp
3年前
jvm
类的加载连接与初始化加载:查找并加载类的二进制数据连接验证:确保被加载的类的正确性准备:为类的静态变量分配内存,并将其初始化为默认值解析:把类中的符号引用转换成为直接引用初始化:为类的静态变量赋予正确的初始值主动使用创建类的实例访问某个类或接口的静态变量,或者对该静态变量赋值调用类的
Wesley13 Wesley13
3年前
Java 构造方法
构造方法什么是构造方法:构造方法就是与类同名的那个方法且没有返回值。就是一个方法。有什么作用:就是初始化对象的成员变量,无参的构造方法,系统自动初始化。有参则根据你的要求初始化不同的类型,默认值如下:实例成员变量默认值:boolean:falsebyte:0short:0char:int:
Wesley13 Wesley13
3年前
C++中内置变量的初始化
对于全局的变量如果内置类型的变量未被显示地初始化,它的值将由定义的位置决定。(1).定义在函数体之外的变量将被初始化为0;(2).定义在函数体内部的变量将不被初始化,它的值将是任意的。对于(1)举例如下:shortsn;intin;longln;longlonglln;
Wesley13 Wesley13
3年前
Java构造器的实质作用
Java构造器的实质作用构造器的本质作用就是为对象初始化,即为实例变量初始化,赋初值;而不是创建对象,创建对象时通过new关键字来完成的,当使用new关键字时就会为该对象在堆内存中开辟一块内存,只等构造器来初始化这块内存,为实例变量赋初始值。在未赋初始值之前是默认值。看代码中的构造器和编译后构造器是不一样的,编译后的构造器包含了更多的内容。
Wesley13 Wesley13
3年前
VC++知识点整理
1.内联函数定义:定义在类体内的成员函数,即函数的函数体放在类体内特点:在调用处用内联函数体的代码来替换,用于解决程序的运行效率问题。一定要在调用之前定义,并且内联函数无法递归调用。2.构造函数与析构函数构造函数:用于为对象分配内存空间,对类的成员变量进行初始化,并执行其他内部管理操作。可以接受参