Java中数组存放的是引用!是对象的地址,不是对象本身,对象都在堆中!

博客围绕Java代码编译问题展开,探讨两段代码能否编译通过及原因。指出涉及Java中数组的知识,数组在堆中生成对象,元素存放给定数据类型对应对象的地址,即引用,初值为null,对象在堆里,数组只存对象地址。
ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

文章目录

问题1

  • 下述代码能否编译通过?为什么?
interface I{

}

public class Demo04 {
    public static void main(String[] args) {
        
        I[] i = new I[2];
    }
}

  • 可以编译通过,这就涉及到对Java中数组的认识了
  • 首先I[] i = new I[2];是在堆中生成了一个数组对象
  • 但是这个数组中的元素存放的是给定数据类型对应的对象的地址,也就是说数组中存放的是引用
  • 初值都为null,暂时不指向任何地址,当然可以编译通过
    在这里插入图片描述

问题2

  • 下述代码可以编译通过吗?为什么?
interface I{

}
class C implements I{

}

public class Demo04 {
    public static void main(String[] args) {

        I[] i = new I[2];
        i[0] = new C();
        i[1] = new C();

    }
}
  • 可以编译通过

  • i[0] = new C();

    • 在堆中生成了一个对象C,把C的地址赋值给i[0]
      在这里插入图片描述
  • 所以要知道new出来的对象永远在堆里,数组中只存放对象的地址,而不存放对象本身

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值