关于在本类定义中实例化本类对象的问题

来源:8-6 Java 中的构造方法

Antique

2017-08-27 15:32

代码

package com.antique;

public class Test {

    private String s = "123";

    public String getS() {
        return s;
    }

    public static void main(String[] args){

        System.out.println(new Test().getS());
    }

}

背景

在一个类中有实例化本类对象的行为,我的理解如下:Java程序分为编译与运行两部分,在编译的时候使用javac,这个时候把`Test.java`编译成`Test.class`,在执行到以上程序的`new Test()`时,JVM把该指令传递给CPU,CPU在堆空间才开辟一个具体的内存空间用来存放一个Test对象。

问题:存放在对空间中的Test对象,其中也有一个本身自己的实例化的代码,该代码会不会执行,造成类似于迭代效果的后果?

写回答 关注

2回答

  • 慕粉095609116
    2017-08-27 18:16:27

    不会,堆中的test对象的默认值是个空值

    慕粉0956... 回复Antiqu...

    建议你看一下类加载原理,我也是初学者,有不对的地方欢迎指正,类加载时,虚拟机会在堆中开辟一块内存用于存放new Test()对象,这个对象的引用在栈中开辟,也可以看做是这个对象的地址值,本代码中通过类调用方法把s的值赋给这个对象,相当于覆盖了这个值

    2017-08-30 22:53:25

    共 2 条回复 >

  • qq_Smile夏汐_0
    2017-08-27 18:13:46

    什么叫类似迭代效果的后果?

    Antiqu...

    堆中的对象Test中又有一个构造函数,如此往复会不会一直构造下去

    2017-08-27 22:25:54

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530559 学习 · 6091 问题

查看课程

相似问题