java 构造器的作用_Java构造器的实质作用

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

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====================

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219898.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午9:38
下一篇 2026年3月17日 下午9:38


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号