`
newObject
  • 浏览: 23816 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

初始化块和构造器

 
阅读更多
1,构造器的语法格式
修饰符:public private,protected,default

类名:构造器的名字必须和类名一致

参数列表

2,构造器的返回值类型
  构造器不能定义返回值的类型,如果定义了返回值的类型,编译并不会报错,因为JVM已经把所谓的构造器当做是一个普通的方法.没有返回值类型并不是没有返回值,构造器有返回值的,返回的是当前类的对象,因此构造器的返回值类型总是当前类,因此没有定义返回值的类型.可以理解为构造器的返回值是隐式的.

3默认的构造器, 
   如果程序中没有显示的定义构造器,系统会默认的给程序一个无参的构造器.一旦加了构造器,默认的构造器就不存在了.

4,构造器是创建对象的重要途径,是不是说构造器就完全负责创建对象呢?
不是,构造器是创建对象的重要途径,同构new 关键字来调用构造器也可以返回一个该类实例,但是这个过程并不是完全有构造器执行的.

实际上,在系统调用构造器的时候,系统会先为该对象分配内存空间,为对象的成员变量赋初值,这个时候对象就已经产生了---这些操作都是在构造器的执行体之前执行的.也就是说,在构造器的执行体执行之前,对象就已经存在了,只是不能被外部的程序调用,构造体执行之后,对象就可以被外部的程序调用了.

5,构造器的重载
         public class ConstructorDemo {

    private int a ;

   

    private String s;

   

    public ConstructorDemo() {

    }

   

    public ConstructorDemo(int a ){

       this.a = a;

    }

   

    public ConstructorDemo (String s,int a){

       this(a);

       this.s = s;

    }

}

6,初始化块(代码块)
初始化块可以当做是Java程序里面的一种成员,代码块又分为:静态代码块和非静态的代码块,一个类中可以有多个代码块,代码块之间执行的顺序是根据代码块在程序中的位置来决定.静态的代码块总是比非静态的代码块先执行

非静态代码块:可以把它当做是类的成员属性来理解.每次创建对象的时候都会执行一遍是属于成员变量

静态的代码块:同样的可以把它理解成类变量,只有在加载类的时候才会执行.

程序对属性进行初始化的顺序是:代码块à属性声明时候指定的初始值à构造器中指定的值

7,初始化块和构造器
   从某种程度上来讲,可以理解为初始化快是构造器的补充,因为初始化快总是在构造器之前执行,同样也可以对对象初始化.

   与构造器不同的是:初始化块只能执行一段固定的代码,不能够像构造器一样接受参数,而且是对类的所有的对象进行初始化.

    跟构造器一样的,程序在执行的时候不仅会执行当前类的初始化快和构造器,会一直追溯到object类的初始化快和构造器.先执行父类的初始化块和构造器(先初始化块,再构造器),然后再执行当前类的初始化块和构造器.

分享到:
评论

相关推荐

    JAVA面试题解惑系列(一)——类的初始化顺序-JAVA程序员JAVA工程师面试必看.pdf,这是一份不错的文件

    从输出结果可以看到,Father 类中的静态变量和静态初始化块首先被初始化,接着是 Son 类中的静态变量和静态初始化块,然后是变量和初始化块,最后是构造器。 类的初始化顺序是 JAVA 面试中一个非常重要的知识点,...

    JAVA面试题解惑系列

    假设存在一个父类`Parent`和一个子类`SubClass`,其中包含了静态变量、实例变量、静态初始化块、初始化块和构造器。初始化的顺序遵循以下原则: 1. **父类的静态变量和静态初始化块**:首先执行,这是因为在Java中...

    JAVA面试题解惑系列.doc

    子类的静态初始化块会在父类的静态初始化块之后执行,但非静态部分则有所不同,子类的非静态变量和初始化块会在父类的构造器之后执行。 对于静态变量和静态初始化块,以及非静态变量和非静态初始化块的顺序,它们并...

    Java初始化块Java初始化块.doc

    普通初始化块在创建对象时会被隐式调用,并且在执行构造器之前运行。这意味着,如果你在类中有多个初始化块,它们将按照它们在代码中的顺序依次执行。初始化块可以用于设置对象的初始状态,特别是当某些初始化逻辑...

    java面试解惑系列

    2. 父类中的所有非静态成员(包括变量、非静态初始化块和构造器)在子类的相关成员之前被初始化。 3. 在同一个类中,静态变量的初始化发生在静态初始化块之前,而非静态变量的初始化则发生在非静态初始化块之前。 ...

    ‘’JAVA面试题解惑系列.doc

    接下来,父类的实例变量、实例初始化块和构造器按顺序执行,最后是子类的实例变量、实例初始化块和构造器。这个过程可以这样理解:在创建子类对象时,父类的部分也会被初始化,以确保父类的属性和行为能够正常工作。...

    Java-objects-initial.rar_objects

    - 在同一类中,静态初始化块先于实例初始化块执行,而实例初始化块和构造器的执行顺序取决于它们在代码中的位置,而不是它们的大小或复杂性。 6. **嵌套类和内部类**: - 对于嵌套类(包括静态和非静态内部类),...

    JAVA面试题解惑系列by(zangweiren)

    由此可见,静态成员(静态变量和静态初始化块)总是最先被初始化,随后是非静态成员(变量、初始化块),最后是构造器。 #### 三、继承情况下的初始化顺序 在Java中,类可以继承其他类。因此,在处理继承时,我们...

    Java初始化块及执行过程解析

    在 Java 中,对象的初始化方式主要有两种:构造器和初始化块。构造器是 Java 中常用的对象初始化方式,用于对对象进行初始化操作。初始化块也是对象初始化的一种方式,但它可以对 Java 对象进行更多的初始化操作。 ...

    JAVA面试题答疑解惑

    这表明了在一个类中静态变量和静态初始化块的初始化顺序以及变量、初始化块和构造器的初始化顺序。 当涉及到继承时,情况会有所不同: ```java class Parent { // 父类静态变量 public static String p_Static...

    经典JAVA面试题解惑系列合集

    - 父类的非静态成员(包括非静态变量、非静态初始化块和构造器)在子类的非静态成员之前初始化。 - 子类的成员按声明顺序初始化。 ##### 示例代码解析 以下是一段示例代码,用于演示继承情况下的类初始化顺序: `...

    对象初始化流程梳理对象初始化流程梳理

    Java中的对象初始化流程是编程实践中一个非常重要的概念,它涉及到类加载、静态初始化块、实例初始化块、构造器等多个方面。下面将详细解释这个过程。 首先,对象初始化流程的起点是程序的入口点,即`main`方法。当...

    java面试题-类的初始化顺序.doc

    如果在构造器或初始化块中依赖其他静态或非静态成员,必须确保这些成员在需要之前已经被正确初始化。否则,可能会导致程序运行时错误或者逻辑错误。 此外,静态初始化块只在类加载时执行一次,而初始化块(也称为...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    System.out.println("父类--静态初始化块"); } // 初始化块 { System.out.println(p_Field); System.out.println("父类--初始化块"); } // 构造器 public Parent() { System.out.println(...

    JAVA面试题解惑系列——类的初始化顺序

    特别要注意的是,在子类的初始化过程中,子类的静态变量和静态初始化块会在父类的变量、初始化块、构造器之前就被初始化。也就是说,在父类完全初始化完毕之前,子类的静态成员已经完成初始化了。 这个顺序很重要,...

Global site tag (gtag.js) - Google Analytics