gpt4 book ai didi

java - 执行这段代码时创建了多少个对象? - java

转载 作者:行者123 更新时间:2023-11-29 04:23:19 27 4
gpt4 key购买 nike

MyTest[] dates = new MyTest[3];
dates[0] = new MyTest("a");
dates[1] = new MyTest("b");

我认为创建了五个对象。
老师以为是三个。
我想知道创建了多少对象。

最佳答案

好吧,这是这个问题的第三个答案。长话短说:我们无法给您一个明确的答案,因为这取决于您计算的内容和方式。

长话短说:至少创建了两个对象,即通过显式调用 MyTest 的构造函数创建的对象:

dates[0] = new MyTest("a");
dates[1] = new MyTest("b");

是否计算 MyTest[] dates = new MyTest[3]; 取决于您是否将数组定义为对象。如果您确实将一个数组算作一个对象,那么至少会创建三个对象。

Arrays are objects in Java ,你数数

MyTest[] dates = new MyTest[3];

同样如此,所以我们至少有三个对象。感谢@Eran 的提示。

实际上还使用了两个对象,即 String"a""b",它们作为参数传递给MyTest 的构造函数。现在 Java 使用称为常量字符串池的优化。每当编译器遇到用 " 编写的 String 时,它将创建该值的 String。如果 String-constant with 的值确实已经存在,它被重用了。这就是为什么

String a = "Hello";
String b = "Hello";
String c = "Hell" + "o";
System.out.println(a == b);
System.out.println(b == c);

将产生输出1

true
false

因此,如果您计算那些 String 常量,则会创建另外两个对象。

因此,答案是创建了 3 个或 5 个对象,具体取决于您的计数方式。


1 Never ever ever use == to compare Strings或任何类型的对象,除非您确切地知道自己在做什么以及为什么这样做。

关于java - 执行这段代码时创建了多少个对象? - java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47792302/

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