zoukankan      html  css  js  c++  java
  • Java基础--对象

    Q1:用什么操作对象?

    A1:句柄,即Handle,再换个说法,引用,甚至指针。

    Q2:对象保存在哪里?

    A2:一般对象存的地方无非在这几个区域中:寄存器,堆栈,栈,静态存储区,ROM,非RAM存储(比如字节流);在Java中,主要存储在堆和栈,具体可以分为方法逃逸(存在堆),线程逃逸(存在堆),和无逃逸(存储在栈)三种方式。

    Q3:对象的初始化?

    A3:对象可以分为是static和非static两种,两种对象的初始化顺序是不一样的。

    就宏观上来说,假设两种对象都存在:

    总的顺序是先static后非static先基类后本类

    具体是先基类的static字段初始化,然后本类中的static字段初始化,再到基类的非静态,再到本类中的非静态,之后执行基类中的构造器,再到本类构造器执行。

    就微观来说,在深入理解jvm里也有讲过,Java解释器先查找类的路径,定位class文件,加载class对象,创建class对象,然后初始化静态对象,当使用new关键词时,先在堆上分配空间,之后空间全部清零,即null,再开始非静态对象的初始化,再执行构造器。

    Q4:static对象创建的特点?

    静态变量定义时,如果是基本类型,如char,int等,先根据标准对其赋值初始值,如果是指向一个对象的句柄,则除非new一个对象连接起来,否则是null。

    如果定义时同时初始化,那么跟非静态类似,但不同的是static只有一个存储区域,并且只初始化一次,这个过程发生在Class对象首次载入的时候。

  • 相关阅读:
    #35 string(缩点+动态规划)
    BZOJ2744 HEOI2012朋友圈(二分图匹配)
    BZOJ2749 HAOI2012外星人(数论)
    BZOJ2743 HEOI2012采花(离线+树状数组)
    洛谷 P3539 [POI2012]ROZ-Fibonacci Representation 解题报告
    关于图论的一些问题模型
    洛谷 P2505 [HAOI2012]道路 解题报告
    ST表
    洛谷 P4754 True Vegetable 解题报告
    洛谷 P2053 [SCOI2007]修车 解题报告
  • 原文地址:https://www.cnblogs.com/Yintianhao/p/12113113.html
Copyright © 2011-2022 走看看