java基础09之类变量初始化时机

讨论了实例变量的初始化时机,现在来讲讲类变量的初始化时机。

实例变量属于Java类本身,只有当程序初始化该Java类时才会为该类的类变量分配内存空间,并执行初始化。

从程序运行的角度来看,每JVM对一个Java类只初始化一次,因此Java程序每运行一次,系统只为类变量分配一次内存空间,执行一次初始化。填写图片摘要(选填)

?注释掉的代码如果执行的话运行程序为3000

如果把代码放在初始工资下面的话程序运行为5000?

Salary、Demo先被类加载,在main方法通过实例化对象调用currentSalary,静态对象s先将值赋给currentSalary为3000,然后iniSalary又赋值,此时为5000,又实例对象给addSalary赋值,最后currentSalary结果为6000

时间: 2024-10-10 09:25:39

java基础09之类变量初始化时机的相关文章

JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中,用户可以通过指定数据类型和标识符来声明变量,其基本语法为: DataType identifier; 或 DataType identifier = value; 其中,DataType是变量类型,如int/string/char/double/boolean等:identifier是变量名称,即标识符:value就是声明变量的值. 注: a.标识符由数字0-9.大小写字母.下划线.美元符号.人民币符号以及所有

分析java类的静态成员变量初始化先于非静态成员变量

分析java类的静态成员变量初始化先于非静态成员变量 依上图中当class字节码文件被jvm虚拟机加载到内存中依次经过 连接 验证:对字节码进行验证 准备:给静态变量分配内存并赋予变量类型各自的默认值(注:基本类型为0或false,对象为null,static final修饰的常量直接赋予相应的值) 解析:类中符号引用转换成直接引用 初始化:为类的静态变量/静态语句块初始化相应的值 而类的初始化契机是:类在被第一次主动使用的情况下,主动使用包括以下6中情况: 使用new关键字实例化对象时. 调用

Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序

Java 类的实例变量初始化的过程 静态块.非静态块.构造函数的加载顺序 先看一道Java面试题: 1 public class Baset { 2 private String baseName = "base"; 3 // 构造方法 4 public Baset() { 5 callName(); 6 } 7 // 成员方法 8 public void callName() { 9 // TODO Auto-generated method stub 10 System.out.p

Java基础09 类数据与类方法(转载)

我们一直是为了产生对象而定义类(class)的.对象是具有功能的实体,而类是对象的类型分类.这是面向对象的一个基本概念. static数据成员 有一些数据用于表述类的状态.比如Human类,我们可以用“人口”来表示Human类的对象的总数.“人口”直接描述类的状态,而不是某个对象. 类的所有对象共享“人口”数据.这样的数据被称为类数据成员(class field). 在类定义中,我们利用static关键字,来声明类数据成员,比如: class Human{    public Human(int

JAVA加载与变量初始化

Java对象初始化 这是一道阿里巴巴的关于Java对象初始化的面试题,堪称经典,代码很简单(编写格式做了些修改),但是需要面试者对Java中对象初始化有一个透彻的认识,那么通过这道面试题,对我有点启发,所以希望在这里分享给大家,希望能给迷惘的初学者一起指引,下面我们直入主题,先看看代码: public class InitializeDemo {   private static int k = 1;   private static InitializeDemo t1 = new Initia

java基础 : 成员变量访问控制及final关键字

用java做项目,但是发现很多java基础不是很清晰.(遇到一点学一点吧) 关键字: public protected  private default final public:所有地方都可以用, protected: 可以用于同一个类.或者同一个包里面.或者是不同包但是是他的子类, private:  只能用于同一类里面(可以是内部类哦). default: 同一个类里面.或者同一个包里面. final这个关键字的作用以前想着是一个不可以变动的常量(所以要在定义时的时候初始化),其实不能变动

java基础 第4章 初始化和清除

第4章 初始化和清除 "随着计算机的进步,'不安全'的程序设计已成为造成编程代价高昂的罪魁祸首之一." "初始化"和"清除"是这些安全问题的其中两个.许多C程序的错误都是由于程序员忘记初始化一个变量造成的.对于现成的库,若用户不知道如何初始化库的一个组件,就往往会出现这一类的错误.清除是另一个特殊的问题,因为用完一个元素后,由于不再关心,所以很容易把它忘记.这样一来,那个元素占用的资源会一直保留下去,极易产生资源(主要是内存)用尽的后果. C++

Java基础----jdk环境变量的编写

配置环境变量 JAVA_HOME:JDK安装目录(C:\Program Files\Java\jdk1.8.0_101) Path:JDK安装目录下的bin目录(%JAVA_HOME%\bin) java基础语法 关键字(Keyword) 在java中一些用作于特殊用途的英文单词,称之为关键字,所有的关键字全部都是小写:goto和const还未被启动,所以在java中主要作为保留字存在. 标识符(identifier) 在java中凡是可以由程序员自己命名的元素统一成为标识符. 包名称 类名称

Java类变量和成员变量初始化过程

一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: 1)       先按照静态成员变量的定义顺序在类内部声明成员变量. 2)       再按照原java类中对成员变量的初始化顺序进行初始化. 一个java类和编译后的class对应的转换如下: 源文件: public class Person{ public static String name=