首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)

初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 3.其次,...初始化父类的普通成员变量和代码块,在执行父类的构造方法; 4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法; 类的加载顺序: 父类静态成员变量、静态块>子类静态成员变量、 静态块>...父类普通成员变量、非静态块>父类构造函数>子类 普通成员变量、非静态块>子类构造函数 静态代码块:随着类的加载而执行,而且只执行一次 非静态代码块:每创建一个对象,就执行一次非静态代码块 关于各个成员简介...: 小练习: 下面代码输出结果是 class C { C() { System.out.print("C"); } } class A { C c = new

50430

淘天Java一面,难度适中!(上篇)

:优先淘汰更早过期的键值。...分析业务实体:根据业务需求,将业务实体抽象成模型中的类或对象。这些实体可能包括产品、用户、订单等,每个实体都有相应的属性和行为。...⑤ 初始化 初始化阶段,Java 虚拟机真正开始执行类中编写的 Java 程序代码,将主导权移交给应用程序。初始化阶段就是执行类构造器方法的过程。...初始化属性:为对象的属性分配内存,并进行初始值赋值。这包括对象的成员变量、实例变量以及与对象相关的其他信息。 执行构造方法:调用对象的构造方法进行对象的初始化。...调用类的静态成员所在的类被加载:当访问一个类的静态成员,而该类的静态成员所在的类还没有被加载时,JVM 需要先加载该静态成员所在的类。

24530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java的面向对象

    方法的作用:重写代码,封装功能,便于修改。 放在方法外的叫成员变量,放在方法里的叫局部变量。...,在未给对象的属性赋值时,有自己默认的初始化值。...局部变量与成员变量的区别: 局部变量在方法中、在代码块中,访问局部变量时只能在就近{   }可以访问,局部变量(没有默认值)必须给初始化值;成员变量在类中、方法外,成员变量在类中任何位置都可以访问,成员变量有...局部变量:作用于当前方法中(代码块中) 成员变量:作用于整个类中的方法 局部变量在栈内存中 成员变量在堆内存中 成员变量的作用时间:从当前对象创建到销毁 局部变量的作用时间:当前方法的执行到结束...优先执行静态块,在以后实战中一般把工厂、数据库的初始化信息。 顺序:静态块(常用)→构造块(不常用)→构造器→方法中的普通块。

    67550

    剖析【C++】——类和对象(下篇)——超详解——小白篇

    }; 在上面的代码中,: x(a), y(b) 就是初始化列表,它在构造函数体执行之前完成成员变量的初始化。...初始化:静态成员变量必须在类外进行初始化。 面试题:实现一个类,计算程序中创建了多少个类对象。...InnerClass inner; inner.displayOuter(*this); inner.displayOuterStatic(); } }; // 定义并初始化外部类的静态成员...外部类不能访问内部类的私有成员,内部类也不会影响外部类的大小计算。 5.再次理解类和对象 1. 抽象现实生活中的实体 在现实生活中,计算机无法直接认识物理世界中的实体,如洗衣机。...总结类和对象的关系 类 是对某一类实体的抽象和描述。类定义了这些实体具有的属性和方法,形成了一种新的自定义类型。 对象 是类的实例,是具体的实体。

    7510

    【Java SE】继承和多态

    1.继承 1.1为什么要继承 Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联,那在设计程序是就需要考虑...1.4父类成员访问 1.4.1子类中访问父类的成员变量 子类和父类不存在同名成员变量 子类和父类成员变量同名 因为就近原则,所以优先访问子类自己的。...如果访问的成员变量与父类中成员变量同名,则优先访问自己的。 成员变量访问遵循就近原则,自己有优先自己的,如果没有则向父类中找。...父子父子肯定是先有父再有子,所以在构造子类对象时候 ,先要调用基类的构造方法,将从基类继承下来的成员构造完整,然后再调用子类自己的构造方法,将子类自己新增加的成员初始化完整 。...B 的构造方法中调用了 func 方法, 此时会触发动态绑定, 会调用到 D 中的 func 此时 D 对象自身还没有构造, 此时 num 处在未初始化的状态, 值为 0.

    30720

    ASP.NET MVC5高级编程——(3)MVC模式的模型

    这是为了给EF框架提供一个钩子,即方便模型到数据库的映射,不理解就记住,后面的项目会详细讲解。 从上面三个类的代码可以看到,红色标记的是主键,而黄色的就是外键。...5 什么是实体框架,什么是代码优先和数据上下文? 新建的ASP.NET MVC5项目会自动包含对实体框架(EF)的引用。...当使用EF的代码优先方法时,需要使用从EF的DbContext类派生出的一个类来访问数据库。...4.执行基架代码 4.1用实体框架创建数据库--local-DB虚拟数据空间 EF框架的代码优先方法会尽可能地使用约定而非配置(即MVC中的约定优于配置)。...4.2使用数据库初始化器--每次插入初始数据-方便项目测试 保持数据库和模型变化同步的一个简单方法是允许实体框架重新创建一个现有的数据库。

    4.8K40

    iOS面试题梳理(二)

    KeyPath、KVC、KVO 键路径(KeyPath): 1.在一个给定的实体中,同一个属性的所有值具有相同的数据类型。 2.键-值编码技术用于进行这样的查找,它是一种间接访问对象属性的机制。...允许一个类在某些特定时刻通知到其他类,而不需要获取到那些类的指针。可以减少框架复杂度。 3.另外一点,代理可以理解为java中的回调监听机制的一种类似。...一般来说我们优先释放子类拥 有的实例,最后释放父类所拥有的实例。...static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝. 5.self:当前消息的接收者。...Core Data的6成员对象 1.NSManageObject:被管理的数据记录Managed Object Model是描述应用程序的数据模型,这个模型包含实体(Entity)、特性(Property

    1.2K101

    2020 最新java面试题附答案

    a) IOC:Spring是开源框架,使用框架可以使我们减少工作量,提高工作效率并且它是分层结构,即相对应的层处理对应的业务逻辑,减少代码的耦合度。...也就是从数据库中提取的信息会自动按照你设置的映射要求封装成特定的对象。所以hibernate就是通过将数据表实体类的映射,使得对对象的修改对应数据行的修改。...class文件,找到后会返回,将class文件加载到方法区中,在类加载的时候,静态成员变量会被分配到方法区的静态区域,非静态成员变量分配到非静态区域,然后开始给静态成员变量初始化,赋默认值,赋完默认值后...,会根据静态成员变量书写的位置赋显示值,然后执行静态代码。...24、对象的创建 a) 遇到一个新类时,会进行类的加载,定位到class文件 b) 对所有静态成员变量初始化,静态代码块也会执行,而且只在类加载的时候执行一次 c) New 对象时,jvm会在堆中分配一个足够大的存储空间

    49330

    据说是来自阿里的最新java面试题(技术面试)

    a) IOC:Spring是开源框架,使用框架可以使我们减少工作量,提高工作效率并且它是分层结构,即相对应的层处理对应的业务逻辑,减少代码的耦合度。...也就是从数据库中提取的信息会自动按照你设置的映射要求封装成特定的对象。所以hibernate就是通过将数据表实体类的映射,使得对对象的修改对应数据行的修改。...class文件,找到后会返回,将class文件加载到方法区中,在类加载的时候,静态成员变量会被分配到方法区的静态区域,非静态成员变量分配到非静态区域,然后开始给静态成员变量初始化,赋默认值,赋完默认值后...,会根据静态成员变量书写的位置赋显示值,然后执行静态代码。...22、对象的创建 a) 遇到一个新类时,会进行类的加载,定位到class文件 b) 对所有静态成员变量初始化,静态代码块也会执行,而且只在类加载的时候执行一次 c) New 对象时,jvm会在堆中分配一个足够大的存储空间

    86650

    关于Java内部类字段和方法不能使用static修饰的原因

    原因: 简单的来说,内部类是外部类的实例,与外部类的的成员变量是一样的,每个实例化出来的对象,它的成员变量赋值都是独立的不会相互影响。...(); a.name = "Oscar"; Employee b = new Employee(); b.name = "jcyang"; 上面的代码是没问题的。...其实归根结底,还是类与对象的区别,静态属性不依赖于对象,因为它保存在jvm的静态区,所以访问修改的时候不需要依赖当前有没有存活的对象,在虚拟机加载的时候也是优先于实例生成的。...而实例对象则是保存在jvm的堆内存中,想要访问内部类,必须先实例化外部类,然后通过外部类才能访问内部类。...内部类其实也可以认为是外部类的一个成员变量,只要是成员变量,各个对象都是不依赖的,静态属性的出现破坏了这一逻辑,所以java语言在语义层面不允许我们那么做,这其实不是技术问题,是一个语言的逻辑和语义问题

    51540

    Swift基础 访问控制

    此功能使您能够隐藏代码的实现详细信息,并指定可以访问和使用该代码的首选界面。 您可以为单个类型(类、结构和枚举)以及属于这些类型的属性、方法、初始化器和下标分配特定的访问级别。...开放访问仅适用于类和类成员,它与公共访问不同,允许模块外的代码子类和重写,如下文在子类中讨论。将类标记为开放明确表示您考虑了使用该类作为超类的其他模块代码的影响,并且您相应地设计了类的代码。...只有当您希望实体成为框架API的一部分时,您才需要将其标记为开放或公共实体。 单元测试目标的访问级别 当您编写具有单元测试目标的应用程序时,应用程序中的代码需要提供给该模块才能进行测试。...此外,对于在同一模块中定义的类,您可以覆盖在特定访问上下文中可见的任何类成员(方法、属性、初始化器或下标)。对于在另一个模块中定义的类,您可以覆盖任何打开的类成员。...在扩展名中声明一个私有成员,并从同一文件中的原始声明访问该成员。 此行为意味着无论您的类型是否有私有实体,您都可以以同样的方式使用扩展来组织代码。

    15900

    java面试知识要点汇总(基础和集合)

    接口里只能定义静态常量,不能定义普通成员变量,抽象类里则既可以定义普通成员变量,也可以定义静态常量。...接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。 接口里不能包含初始化块,但抽象类里完全可以包含初始化块。...()的初始容量可以容纳16个字符,当该对象的实体存放的字符的长度大于16时,实体容量就自动增加。...StringBuffer(int size)可以指定分配给该对象的实体的初始容量参数为参数size指定的字符个数。当该对象的实体存放的字符序列的长度大于size个字符时,实体的容量就自动的增加。...以便存放所增加的字符。 StringBuffer(String s)可以指定给对象的实体的初始容量为参数字符串s的长度额外再加16个字符。

    94030

    关于Java内部类字段和方法不能使用static修饰的原因

    原因: 简单的来说,内部类是外部类的实例,与外部类的的成员变量是一样的,每个实例化出来的对象,它的成员变量赋值都是独立的不会相互影响。...(); a.name = "Oscar"; Employee b = new Employee(); b.name = "jcyang"; 上面的代码是没问题的。...其实归根结底,还是类与对象的区别,静态属性不依赖于对象,因为它保存在jvm的静态区,所以访问修改的时候不需要依赖当前有没有存活的对象,在虚拟机加载的时候也是优先于实例生成的。...而实例对象则是保存在jvm的堆内存中,想要访问内部类,必须先实例化外部类,然后通过外部类才能访问内部类。...内部类其实也可以认为是外部类的一个成员变量,只要是成员变量,各个对象都是不依赖的,静态属性的出现破坏了这一逻辑,所以java语言在语义层面不允许我们那么做,这其实不是技术问题,是一个语言的逻辑和语义问题

    89970

    .NETORM框架设计(利用抽象、多态实现无反射的绿色环保ORM框架)

    然后读取相关成员属性值,作为拼接SQL语句的必备条件。 目的之二:为了表达属性与字段的对应关系及一些主、外键 ORM中将实体的属性映射成数据库中表的字段,一般通过两种方式来表达这中关系。...通过抽象、多态设计不需要特性的ORM实体 大部分ORM框架是需要代码生成器做支持的,不是所有的代码都是需要程序员手动去敲的,可以通过一些模板引擎类的代码生成器,编辑好自己的模板然后生成大部分的实体代码。...那么我们先来讨论如何设计实体结构,让它能包含我们ORM所需要的必备信息。其实我们的思路稍微转变一下利用抽象来解决问题。提高抽象层次,将实体视为两个层面。顶层抽象类被ORM使用,子类被调用者使用。...图: 我们的要求就是ORM中不能存在一个反射的代码。所以我们约定了BasicEntityObject抽象类,通过定义顶层抽象基类来包含子类所要用到的一些属性信息。..."] as string; } set { this["AttachStop"] = value; } } } 那么中间的类是干嘛用的呢,是为了将初始化隔离在基类中

    77020
    领券