gpt4 book ai didi

java - for 循环内的引用类型变量声明

转载 作者:行者123 更新时间:2023-12-01 23:03:03 25 4
gpt4 key购买 nike

让我们有一个学生类(class)。形成以下代码片段(Java)我们知道 -

Student aStudent = new Student();
  1. 创建“学生”类型引用变量
  2. 使用“new Student()”创建“Student”对象
  3. 该对象分配有引用变量“aStudent”

到目前为止我知道,每次我们编写“new Student()”时都会创建一个新对象,并为新创建的对象分配一个内存空间。但有时我们会在 for 循环中写这样的东西 -

for ( int i=0; i<10000; i++) {
Student student = new Student();
...
...
...
}

在这种情况下 -

  1. JVM 是否创建 Student 的新对象 10000 次?或者在幕后进行任何优化以节省内存。
  2. 如果发生任何优化,那么它是如何完成的?我怎样才能知道for循环中实际创建的对象的数量。

提前致谢。

最佳答案

1.JVM会创建Student的新对象10000次吗?或者在幕后进行任何优化以节省内存。

是的。将创建 10,000 个 Student 对象。最后,所有 10000 个都无法访问,因为所有对象和引用都将超出范围(是的,将创建 10000 个引用。每个对象 1 个)。所有对象和引用(名为student)都将超出范围并准备好进行GC。

2.如果发生了优化,那么是如何进行的?我怎样才能知道for循环中实际创建的对象的数量

我不知道编译器在这种情况下进行了任何优化。但我知道的是,如果你使用像codePro这样的静态代码分析工具,它会将这段代码标记为警告。即,您不应该在循环中创建对象。

关于java - for 循环内的引用类型变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23221447/

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