全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

实例解析Java中的构造器初始化

1.初始化顺序
  当Java创建一个对象时,系统先为该对象的所有实例属性分配内存(前提是该类已经被加载过了),接着程序开始对这些实例属性执行初始化,其初始化顺序是:先执行初始化块或声明属性时制定的初始值,再执行构造器里制定的初始值。 在类的内部,变量定义的先后顺序决定了初始化的顺序,即时变量散布于方法定义之间,它们仍就会在任何方法(包括构造器)被调用之前得到初始化。

class Window {
  Window(int maker) {
    System.out.println("Window(" + maker + ")");
  }
}
class House {
  Window window1 = new Window(1);
  House() {
    System.out.println("House()");
    w3 = new Window(33);
  }
  Window window2 = new Window(2);
  void f() {
    System.out.println("f()");
  }
  Window w3 = new Window(3);
}
public class OrderOfInitialization {
  public static void main(String[] args) {
    House h = new House();
    h.f();
  }
}

运行结果:

Window(1)
Window(2)
Window(3)
House()
Window(33)
f()

由输出可见,w3这个引用会被初始化两次:一次在调用构造器之前,一次在调用期间(第一次引用的对象将被丢弃,并作为垃圾回收)。

2.静态数据的初始化
  无论创建多少个对象,静态数据都只占一份存储区域。static关键字不能应用于局部变量,因此它只能作用于域。

class Bowl {
  Bowl(int maker) {
    System.out.println("Bowl(" + maker + ")");
  }
  void f1(int maker) {
    System.out.println("f1(" + maker + ")");
  }
}
class Table {
  static Bowl bowl1 = new Bowl(1);
  Table() {
    System.out.println("Table()");
    bowl2.f1(1);
  }
  void f2(int maker) {
    System.out.println("f2(" + maker + ")");
  }
  static Bowl bowl2 = new Bowl(2);
}

class Cupboard {
  Bowl bowl3 = new Bowl(3);
  static Bowl bowl4 = new Bowl(4);
  Cupboard() {
    System.out.println("CupBoard()");
    bowl4.f1(2);
  }
  void f3(int maker) {
    System.out.println("f3(" + maker + ")");
  }
  static Bowl bowl5 = new Bowl(5);
}
public class StaticInitialization {
  public static void main(String[] args) {
    System.out.println("created new Cupboard() in main");
    new Cupboard();
    System.out.println("created new Cupboard in main");
    new Cupboard();
    table.f2(1);
    cupboard.f3(1);
  }
  static Table table = new Table();
  static Cupboard cupboard = new Cupboard();
}

运行结果:

Bowl(1)
Bowl(2)
Table()
f1(1)
Bowl(4)
Bowl(5)
Bowl(3)
CupBoard()
f1(2)
created new Cupboard() in main
Bowl(3)
CupBoard()
f1(2)
created new Cupboard in main
Bowl(3)
CupBoard()
f1(2)
f2(1)
f3(1)

从某种程度上来看,初始化是一段固定执行的代码,它不能接受任何参数。因此初始化块对同一个类所有对象所进行的初始化处理完全相同。基于这个原因,不难发现初始化块的基本用法,如果有一段初始化处理代码对所有对象完全相同,且无须接受任何参数,就可以把这段初始化处理代码提取到初始化块中。

以上就是本文关于实例解析Java中的构造器初始化的全部内容,希望对大家有所帮助。


# java  # 构造器初始化  # Java基础教程之构造器与方法重载  # 通过实例了解java spring使用构造器注入的原因  # Java私有构造器使用方法示例  # Java构造器使用方法及注意事项  # Java 构造器原理及用法解析  # java 页面url传值中文乱码的解决方法  # java中文传值乱码问题的解决方法  # javascirpt实现2个iframe之间传值的方法  # java及C++中传值传递、引用传递和指针方式的理解  # Java构造器与传值学习总结  # 完全相同  # 过了  # 两次  # 会在  # 这段  # 将被  # 应用于  # 创建一个  # 只占  # 多少个  # 就可以  # 为该  # 作用于  # 加载  # 决定了  # 器里  # 程度上  # System  # println  # House 


相关文章: 如何在Windows环境下新建FTP站点并设置权限?  建站VPS配置与SEO优化指南:关键词排名提升策略  零服务器AI建站解决方案:快速部署与云端平台低成本实践  怎么将XML数据可视化 D3.js加载XML  如何获取开源自助建站系统免费下载链接?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  如何通过山东自助建站平台快速注册域名?  视频网站制作教程,怎么样制作优酷网的小视频?  如何在腾讯云服务器上快速搭建个人网站?  如何用景安虚拟主机手机版绑定域名建站?  如何通过老薛主机一键快速建站?  如何选择美橙互联多站合一建站方案?  建站之星如何修改网站生成路径?  常州自助建站费用包含哪些项目?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  英语简历制作免费网站推荐,如何将简历翻译成英文?  宝塔建站无法访问?如何排查配置与端口问题?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  建站之星展会模板:智能建站与自助搭建高效解决方案  如何快速搭建响应式可视化网站?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  ,sp开头的版面叫什么?  如何通过免费商城建站系统源码自定义网站主题与功能?  外贸公司网站制作哪家好,maersk船公司官网?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  网站制作报价单模板图片,小松挖机官方网站报价?  制作宣传网站的软件,小红书可以宣传网站吗?  如何在阿里云香港服务器快速搭建网站?  如何在Tomcat中配置并部署网站项目?  如何快速查询域名建站关键信息?  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何零基础开发自助建站系统?完整教程解析  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  如何快速搭建高效香港服务器网站?  网站微信制作软件,如何制作微信链接?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  如何在阿里云通过域名搭建网站?  如何在IIS中新建站点并配置端口与IP地址?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  建站之星后台管理系统如何操作?  青岛网站建设如何选择本地服务器?  html制作网站的步骤有哪些,iapp如何添加网页?  相册网站制作软件,图片上的网址怎么复制? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。