Java构造器的实质作用

Wesley13
• 阅读 604

Java构造器的实质作用

构造器的本质作用就是为对象初始化,即为实例变量初始化,赋初值; 而不是创建对象,创建对象时通过new关键字来完成的,当使用new 关键字时就会为该对象在堆内存中开辟一块内存,只等构造器来初始化这块内存,为实例变量赋初始值。在未赋初始值之前是默认值。看代码中的构造器和编译后构造器是不一样的,编译后的构造器包含了更多的内容。

非静态代码块一般是初始化实例变量的。编译后,非静态代码块中的代码会提取到构造器中,初始化实例变量的代码也提取到构造器中,他们在构造器中的排列顺序和他们在源码中的顺序一致,并且在构造器中原有代码的前面。

构造器负责初始化实例变量。

示例代码:

package com.usoft7;

/**
 * Created with IntelliJ IDEA.
 * User: ASUS
 * Date: 14-3-29
 * Time: 上午1:35
 * To change this template use File | Settings | File Templates.
 */
class User {
    public String name;

    {
        System.out.println("非静态代码块---1");
    }

    public int age;

    User() {
        System.out.println("User 无参构造");
    }

    User(String name, int age) {
        this.name = name;
        System.out.println("name赋值完成");
        this.age = age;
        System.out.println("age赋值完成");
        System.out.println("初始化完成----");
    }

    {
        System.out.println("非静态代码块---2");
    }

    String getName() {
        return name;
    }

    void setName(String name) {
        this.name = name;
    }

    int getAge() {
        return age;
    }

    void setAge(int age) {
        this.age = age;
    }
}

class Person {
    public User u = new User();
    public User user = new User("helo", 12);
    public String school;

    Person() {
    }

    User getUser() {
        return user;
    }

    void setUser(User user) {
        this.user = user;
    }

    String getSchool() {
        return school;
    }

    void setSchool(String school) {
        this.school = school;
    }
}

package com.usoft7;

public class Test {
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println("========" + p.u.getAge());
        System.out.println("========" + p.u.getName());
        System.out.println("-------------------------");
        System.out.println("========" + p.user.getAge());
        System.out.println("========" + p.user.getName());
    }
}

 打印结果,

非静态代码块---1
非静态代码块---2
User 无参构造
非静态代码块---1
非静态代码块---2
name赋值完成
age赋值完成
初始化完成----
========0
========null
-------------------------
========12
========helo

附:javac命令使用utf-8编码

E:\test-java\hh>javac -encoding utf-8 Test.java

总结:通过此实例可以很好的了解构造器的作用,静态块和非静态块。

理解实例变量的初始化(先分配内存再赋值)

====================END====================

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java成员变量的初始化
类变量(static变量,不需要实例化对象也可以引用)实例变量(非static变量,需要实例化对象)局部变量(类的成员函数中的变量)初始化方式:构造函数初始化变量声明时初始化代码块初始化java自动初始化(在构造函数执行之前执行) java保证所有变量被使用之前都是经过初始化的(声明并且定义过,被赋值
3A网络 3A网络
2年前
一文了解 Java 中的构造器
一文了解Java中的构造器C引入了构造器(constructor,也叫构造函数)的概念,它是在创建对象时被自动调用的特殊方法。Java也采用了构造器,并且还提供了一个垃圾收集器(garbagecollector),当不再使用内存资源的时候,垃圾收集器会自动将其释放。构造器定义在Java中,可以通过编写构造器来确保每个对象的初始化。但是这
Wesley13 Wesley13
3年前
Java构造方法与析构方法实例剖析
Java构造方法类有一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量。在创建对象时,会自动调用类的构造方法。构造方法定义规则:Java中的构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有void)。另外,构造方法一般都应用public类型来说明,这样才能在程序任意的位置创建类的实例-
Wesley13 Wesley13
3年前
C++中构造函数和析构函数
构造函数定义它是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。另外,一个类可以有多个构造函数,我们可以根据其参数个数的不同或参数类型的不同来区分它们(这就是构造函数的重载)特点1.构造函数的命名必须和类名完全相同;2.构造函数的功能主要用于在类的对象创建时定义
Wesley13 Wesley13
3年前
Java构造器就是这么简单!
前言理解构造器之前,首先我们需要了解Java中为什么要引入构造器,以及构造器的作用。在很久之前,程序员们编写C程序总会忘记初始化变量(这真的是一件琐碎但必须的事),C引入了构造器(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法。Java也采用了构造器。一、构造器的引入引入构造器帮助我们解决了哪
Wesley13 Wesley13
3年前
Java面向对象之构造器
\toc\Java面向对象之构造器利用构造器确保初始化初始化问题是关系编程方式是否安全的一个重要的问题。功能:在创建对象时执行初始化。在Java中,每个类至少有一个构造器。格式如下:修饰符构造器名(参数列表){...执行体
Wesley13 Wesley13
3年前
C++构造函数详解(复制构造函数 也是 拷贝构造函数)
构造函数是干什么的该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员。构造函数的种类!复制代码(https://oscimg.oschina.net/oscnet/54a3f729e89451abb86a0bec4639
小万哥 小万哥
9个月前
Java 构造函数与修饰符详解:初始化对象与控制权限
Java构造函数Java构造函数是一种特殊的类方法,用于在创建对象时初始化对象的属性。它与类名相同,并且没有返回值类型。构造函数的作用:为对象的属性设置初始值执行必要的初始化操作提供创建对象的多种方式构造函数的类型:默认构造函数:无参数的构造函数,如果用户