eCode代码加工厂

这里不搬运代码只提供对代码的深加工

Java创建对象过程中,内存的分配

对象的内存分配

我们都知道,要使用类,就一定要为其创建对象。那么,在创建对象过程中,内存是如何分配的呢?
类的本质是一种引用数据类型,这与数组是一样的。比如本文提供的简单例子程序中的Person类,它有两个属性,name和age,而属性是需要内存来存储的。我们以person对象来讲解。执行Person person=null; 时,Java系统会在栈内存开辟一个空间给对象person,程序继续向下执行到person=new Person(); 时,Java系统会在堆内存开辟空间保存对象person属性(注意是属性)的内容。person变量本身存储的只是一个地址值,没有存储任何实际数据,但是它指向了Person类。所以当访问person对象的属性和方法时,实际上访问的是person所引用对象的属性和方法。

堆内存中的变量可以有多个引用,但是它们实际引用的是同一个类,如果对其中一个对象进行修改,那么其他对象的属性也会发生变化,因为它们指向同一个类。
可以这么说,对象的名称保存在栈内存中,而对象的属性保存在以new为关键字才能开辟的堆内存中。在Java中,当为类创建一个对象时,编译器会为对象的各个类型的成员变量进行初始化,无论是基本数据类型还是引用数据类型。
注意:对象在使用前一定要实例化,如果对象没有实例化而直接使用,那么中编译时就会出现空指针异常
本文例程代码:

public class hello {

    public static void main(String[] args) {
        Person person=null;
        person=new Person();
        person.say();
    }


}
class Person{
    String name="Ters";
    int age=18;
    public void say() {
        System.out.println(name+" "+age);
    }
}

匿名对象

匿名对象是指没有栈空间的对象,即没有明确的名字给出对象。匿名对象使用的是堆内存,是通过关键字new进行开辟,因为没有对应的栈内存空间引用,所以对象只能使用一次。

new Person().say();
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_17313961/article/details/52356400
文章标签: java 对象 内存
个人分类: Java
所属专栏: 细说JAVA
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Java创建对象过程中,内存的分配

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭