初始化的顺序首先是static(如果它们尚未由前一次对象创建初始化,也就是new对象的时候,只执行一次static变量初始化),变量初始化顺序有变量在类的定义顺序决定的;

对象的创建过程,以Dog类为例:

1.类型为Dog首stati次创建的时候,或者Dog类的stajitic方法/static字段首次访问时,java编译器必须找到Dog.class;

2.找到Dog.class后(它会创建一个Class对象),它的所有static初始化模块都会运行。因此,static初始化仅发生一次-----在Class对象首次载入的时候

3.创建一个new Dog()时,Dog对象的构建进程首先会在内存堆(heap)里为一个Dog对象分配足够多的内存空间;

4.这种空间为情况为0,将Dog中的所有基本类型设为它们的默认值;

5.进行字段定义时发生的所有初始化都会执行;

6.执行构造器

packagethinking;//: Beetle.java//The full process of initialization.

classInsect {int i = 9;intj;

Insect() {

prt("i = " + i + ", j = " +j);

j= 39;

}static int x1 = prt("static Insect.x1 initialized");static intprt(String s) {

System.out.println(s);return 47;

}

}

继承类

packagethinking;public class Beetle extendsInsect {int k = prt("Beetle.k initialized");

Beetle() {

prt("k = " +k);

prt("j = " +j);

}static int x2 = prt("static Beetle.x2 initialized");static intprt(String s) {

System.out.println(s);return 63;

}public static voidmain(String[] args) {

prt("Beetle constructor");

Beetle b= newBeetle();

}

}

执行结果:

static Insect.x1 initialized

static Beetle.x2 initialized

Beetle constructor

i = 9, j = 0

Beetle.k initialized

k = 63

j = 39

java创建变量的过程_java 对象的创建过程相关推荐

  1. java成员变量垃圾回收_JAVA 对象被垃圾回收后其成员变量可用吗? | 学步园

    我们知道JVM中一个对象实例超出作用域或无引用的时候会被垃圾回收,那么他被垃圾回收后,依赖其成员变量的其他实例是否还能正常使用呢?经过测试后发现即使一个实例被垃圾回收,如果他内部的数据被其他对象使用, ...

  2. Java 虚拟机学习笔记 | 类加载过程和对象的创建流程

    前言 创建对象是 Java 语言绕不开的话题,那么对象是如何创建出来的呢?我们今天就来聊一聊.对象创建第一步就是检查类是否加载,而类的加载又牵扯到类的加载过程.如果单说对象的创建而绕开类的加载过程,感 ...

  3. java初始化实例化_Java对象的创建过程:类的初始化与实例化

    一.Java对象创建时机 我们知道,一个对象在可以被使用之前必须要被正确地实例化.在Java代码中,有很多行为可以引起对象的创建,最为直观的一种就是使用new关键字来调用一个类的构造函数显式地创建对象 ...

  4. java什么是对象如何创建对象_java对象的创建过程是什么

    java对象的创建过程: 类加载检查-->分配内存-->初始化零值-->设置对象头-->执行init方法 具体如下: 1.类加载检查 虚拟机遇到一条new指令时,先检查这个指令 ...

  5. java 成员变量的初始化_Java类变量和成员变量初始化过程

    一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: ...

  6. java 反射创建对象并赋值_java使用反射创建并操作对象的方法

    Class 对象可以获得该类里的方法(由 Method 对象表示).构造器(由 Constructor 对象表示).成员变量(由 Field 对象表示),这三个类都位于 java.lang.refle ...

  7. java 对象引用 弱引用吗_Java对象的强引用、软引用、弱引用和虚引用 笔记

    从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 1.强引用 使用最普遍的引用.如果一个对象具有强 ...

  8. java中类变量局部量_java入门---变量类型类变量局部变量实例变量静态变量

    在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: typeidentifier[= value][, identifier[= value]...]; 格式说明:type为Jav ...

  9. java改变变量编码方式_Java 10将如何改变您的编码方式

    java改变变量编码方式 突出显示Java 10中新的Java局部变量类型推断功能 早在2016年,Java社区就掀起了新的JDK增强提案(JEP): JEP 286 . 现在,两年后,局部变量类型推 ...

最新文章

  1. python笔记:断言assert
  2. Python中list和set的区别
  3. html自定义列表第三层嵌套,【微信小程序】关于微信小程序多层嵌套渲染列表以及嵌套列表中数据的获取...
  4. 高考计算机会考基础知识点,2017高考一定会考的46个知识点!
  5. 同事操作两个数据源保持事务一致_「微服务架构」微服务架构中的数据一致性...
  6. LeetCode动态规划 杨辉三角
  7. P1297 [国家集训队]单选错位 期望
  8. 分布式 | Dubbo 架构设计详解
  9. 国税计算机基础知识,国税系统计算机基础知识培训课件精要.ppt
  10. 新版电力系统决策支持系统开发告一段落
  11. 阿里巴巴校招offer面经
  12. DELL服务器硬件报错及对应的解决方法(R710)
  13. IMDB电影排行爬取分析
  14. 帮室友写的表白程序 Python打包成exe文件
  15. 解决服务器挖矿漏洞 crypto
  16. 高德地图 搜索定位 搜索关键词 定位
  17. php获取ascii的值,php chr() ord() 获取ASCII编码 中文截取
  18. 妹子好不好,只看一个地方!
  19. 机器视觉尺寸检测基础
  20. 关于向量的期望值、均值向量和协方差矩阵

热门文章

  1. spring——使用xml声明式事务整合jdbc——GRUD
  2. leetcode 363. Max Sum of Rectangle No Larger Than K | 363. 矩形区域不超过 K 的最大数值和(前缀和,图文详解)
  3. 牛客网_PAT乙级_1019旧键盘 (20)
  4. Java结束线程的三种方法
  5. Codeup-问题 A: 装箱问题
  6. hdu 1086 线段相交
  7. v-if 与v-show 的区别及使用场景
  8. 【简洁易懂】Filter的四种拦截方式
  9. 【最详细】数据结构(C语言版 第2版)第三章课后习题答案 严蔚敏 等 编著
  10. 堆排序算法c语言筛选法,【排序】排序算法之选择排序