`
schy_hqh
  • 浏览: 556131 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(基础)java中对象的创建过程

 
阅读更多

Java面向对象,对象是怎么创建出来的?在内存中又是怎么个布局呢?

一个对象的创建过程:

 

public class Person {
	
	//成员变量---在堆内存分配空间,构造函数被调用的时候,对其进行初始化
	private int age;
	
	//默认构造函数,如果没有重载其它构造函数,Jave编译器会自动加入一个无参的构造函数,因为要确保至少有一个构造函数存在,如果没有,怎么创建对象呢!
	public Person() {
		//super(); //默认调用父类的无参构造函数,所以创建子类对象会先调用父类构造函数,而调用父类构造函数,就导致父类被加载
		//return;
	}
	
	//带参数的构造函数,此时如果不显示写无参构造函数,Java编译器不加,因为至少已经有一个构造函数存在了
	public Person(int age) {
		//super(); //默认调用父类的无参构造函数,所以创建子类对象会先调用父类构造函数,而调用父类构造函数,就导致父类被加载
		this.age = age;
		//return;
	}
	
	public static void main(String[] args) {
		//new 在堆内存开辟空间   
		//Person() 表示调用Person类的无参构造函数
		//结合起来 new Person()---> 在堆内存开辟空间,并调用Person构造函数对该内存中的变量age进行初始化,age=0
		Person p1 = new Person();
	
		//new 在堆内存开辟空间   
		//Person(20) 表示调用Person类的参数为int类型的构造函数
		//结合起来 new Person(20)---> 在堆内存开辟空间,并调用Person构造函数对该内存中的变量age进行初始化,age=20
		Person p2 = new Person(20);
	}
}

 

 

另一个例子

public class Person {
	
	/**
	 * 对象的成员属性
	 */
	private String name;
	/**
	 * 对象的成员属性
	 */
	private int age;
	
	/**
	 * 构造方法:在对象创建时调用,用来对成员属性进行初始化
	 * 如果没有指定构造函数,则调用默认构造函数,此时对象中的数据都为对应类型的初始值
	 */
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	/**
	 * 对象的一般方法,可以被调用多次,只能在对象创建完成后才能通过对象来调用
	 */
	public void say() {
		System.out.println(this.name+","+this.age);
	}
	
	/**
	 * 获取成员变量的值
	 */
	public String getName() {
		return name;
	}
	
	/**
	 * 对象创建时,可以通过构造函数对成员属性进行初始化
	 * 对象创建后,提供一般方法对成员变量进行修改
	 */
	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	//==================================================
	public static void main(String[] args) {
		//堆内存中开辟内存空间分配给当前创建的对象,name=null,age=0
		//程序自动调用显示定义的构造函数,在构造函数中完成对当前对象的name和age初始化
		//然后,将当前对象的地址赋值给栈内存中的person变量
		Person person = new Person("zhangsan",20);
		//对象调用一般方法
		person.say();
		//栈内存中的person变量根据前面赋值的地址,从堆内存中取出对应的name和age
		System.out.println(person.getName()+","+person.getAge());
	}
	
}

 

分享到:
评论

相关推荐

    java对象创建过程

    ### Java对象创建过程详解 在Java编程语言中,对象是程序的基本单元,一切皆对象这一概念使得Java在面向对象编程领域具有重要的地位。本文将详细阐述Java对象的创建过程,帮助读者深入理解Java基础。 #### 一、类...

    java内存对象分配过程研究

    在对象创建的过程中,JVM是如何决定为对象分配多少内存的呢?这个问题涉及到JVM的具体实现以及对象本身的结构。一般而言,对象在内存中的布局可以分为三个部分: 1. **对象头(Object Header)**:存储对象自身的运行...

    浅析Java语言中对象的创建过程.pdf

    整个Java对象创建过程涉及到内存的动态分配、类的加载、字段的初始化、构造函数的调用等多个步骤,这些都是Java运行时系统的核心部分。了解这些机制对于编写高效且稳定的Java应用程序至关重要。通过本文,读者可以更...

    java 基础 类对象创建实例化过程 实例解析

    * 执行启动类的main函数 -> 创建对象的继承树从高到底的类层次中的静态块(如果已经被执行过,则不会重复执行) -> * 继承树中的从最高层开始的实例语句块{}、然后对应的构造函数、以及构造函数中调用的方法 * ...

    Java中对象与引用

    #### 二、对象与引用的创建过程 考虑下面的示例代码: ```java class Student { String name; int age; } // 创建对象 Student stu = new Student(); ``` 这段代码实际上执行了四个步骤: 1. **创建对象**: `...

    浅析Java语言中对象的创建过程.zip

    此外,对于性能敏感的应用,了解对象创建过程有助于优化内存使用和减少垃圾回收的压力。例如,通过避免不必要的对象创建,或者使用池化技术来重用对象,可以提高程序的效率。 总的来说,Java中对象的创建是程序运行...

    探讨Java的对象是怎么在内存中产生的?

    本文将详细探讨Java对象在JVM中的创建过程以及其内存布局,帮助读者更深入地理解Java对象是如何在内存中产生的。 #### 二、对象的创建 Java对象是由类实例化的结果,当我们使用`new`关键字创建一个对象时,实际上...

    Java面向对象应用程序开发

    在开发过程中,我们会用到Java的开发工具,如JDK(Java Development Kit),它包含了编译器javac、解释器java以及各种开发工具。 在实际开发中,我们还需要了解MVC(Model-View-Controller)设计模式,它常用于构建...

    Java面向对象基础源代码教程

    在"Java面向对象基础源代码教程"中,我们将深入探讨这一主题。 首先,我们需要理解面向对象的三个主要原则:封装、继承和多态。封装是将数据和操作这些数据的方法捆绑在一起,形成一个独立的对象。这样做可以隐藏...

    JAVA编程基础-05面向对象基础.pdf

    面向对象编程(OOP)是Java语言的重要特点,它从现实世界中客观存在的事物出发来构造软件系统,并尽可能运用人类的自然思维方式。面向对象编程的思想强调直接以问题域中的事物为中心来思考问题,认识问题,并根据...

    Java编程中对象的创建与使用以及方法的重构与重载的区别说明

    对象的创建过程 创建一个对象包括三个主要步骤:对象的说明、对象的实例化和对象的初始化。 - **对象的说明**:声明对象,即告诉编译器我们想要创建的对象是什么类型。 - **对象的实例化**:使用`new`关键字为...

    Java面向对象程序设计(第二版)

    异常处理是Java中处理程序执行过程中出现的错误的一种机制。异常是指在程序执行过程中发生的一些不寻常的事件,这可能会中断程序的正常流程。Java提供了一套完整的异常处理机制,包括异常类、异常捕获(try-catch)...

    《Java面向对象程序设计(第2版)》课件

    Java面向对象程序设计是计算机科学中的一个重要领域,尤其在软件开发中占据核心地位。第二版的《Java面向对象程序设计》课件旨在深入浅出地介绍这一关键概念,帮助学习者掌握Java语言的基础以及面向对象编程的核心...

    Java面向对象程序设计耿祥义版课件

    2. 构造器:构造器用于初始化新创建的对象,Java中的构造器与类同名且无返回值。 3. 访问控制修饰符:private、default(包访问)、protected和public,分别限制了类成员的访问范围。 4. 方法重载与覆盖:重载在同一...

    java面向对象练习题-经典

    Java面向对象练习题是Java编程语言中非常重要的一部分,这些练习题涵盖了Java语言的基础知识,包括Java基本数据类型、运算符、控制结构、方法、类和对象、继承、多态、抽象类和接口等方面。通过这些练习题,可以对...

    Java面向对象精髓编程

    以上就是Java面向对象编程的主要知识点,对于初学者来说,理解并熟练运用这些概念是掌握Java编程的基础。对于有经验的Java工程师,深入研究这些知识点可以进一步提高代码质量和设计能力。在"Java面向对象精髓编程"的...

    Java面向对象程序设计(第3版)-PPT课件

    《Java面向对象程序设计(第3版)》是人民邮电出版社出版的一部经典教材,由杨晓燕和李选平两位专家共同编著。...在学习过程中,配合书籍和实践,能够更好地理解和掌握Java面向对象编程的设计思想和技巧。

    浅谈Java内存区域与对象创建过程

    浅谈Java内存区域与对象创建过程 Java内存区域是Java虚拟机在执行Java程序的过程中所管理的内存,它被划分为若干个不同的数据区域,每个区域都有其自己的用途和创建和销毁的时间。根据《Java虚拟机规范(JavaSE7版...

    JAVA面向对象程序设计(期末考试试题及答案).pdf

    Java面向对象程序设计是编程领域中的核心概念,它基于面向对象的编程思想,将现实世界中的实体抽象为类,通过类来创建对象,实现代码的复用和模块化。在这个期末考试试题中,我们看到了一系列关于Java编程的问题,...

Global site tag (gtag.js) - Google Analytics