gpt4 book ai didi

java - 数组内存初始化背后的概念是什么?

转载 作者:行者123 更新时间:2023-12-02 00:24:11 24 4
gpt4 key购买 nike

String a[]=null;
if(a[0]!=null)
{
System.err.println("dd-1");
}

if(a!=null)
{
System.err.println("dd-2");
}
}

在第一个 if 条件中它抛出空指针异常,但在第二个 if 条件中它不抛出空指针异常?谁能向我解释一下吗?堆内存分配背后有什么概念吗?

我也知道了这个问题,因为缺少内存分配,String a[]=new String.[10];请解释一下这个概念?

最佳答案

在第一个 if 条件中,您尝试访问数组中的第一个元素,即使没有为其进行分配。

在第二种情况下,您只是测试引用。

(把它想象成C指针,char *str = NULL除了指向NULL的指针之外没有分配任何东西)

String a[]=null;

没有为数组分配内存,仅创建引用。

String a[] = new String[1]

在堆上创建保存一个 String 对象的内存,并且 a 指向分配的字符串对象。

关于java - 数组内存初始化背后的概念是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10344501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com