Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 新关键字在这里做什么?_Java - Fatal编程技术网

Java 新关键字在这里做什么?

Java 新关键字在这里做什么?,java,Java,我无法理解main方法(newmyu class();)中的两条语句 除了在对象定义中,我从未见过这个语句。我知道new关键字为一个对象分配内存并分配一个引用地址,但在这种情况下发生的事情是完全不明确的;为什么分配内存 新关键字在这里做什么?不管这是什么,通过使用该语句,我可以从main方法显式调用构造函数。我在教科书或互联网上的任何地方都找不到这样的语句。new my_class()创建了一个类型为my_class的新对象。它没有被分配;所以它被丢弃了 但在被丢弃之前,无论如何都要构建对象;构

我无法理解main方法(
newmyu class();
)中的两条语句

除了在对象定义中,我从未见过这个语句。我知道new关键字为一个对象分配内存并分配一个引用地址,但在这种情况下发生的事情是完全不明确的;为什么分配内存

新关键字在这里做什么?不管这是什么,通过使用该语句,我可以从main方法显式调用构造函数。我在教科书或互联网上的任何地方都找不到这样的语句。

new my_class()
创建了一个类型为
my_class
的新对象。它没有被分配;所以它被丢弃了


但在被丢弃之前,无论如何都要构建对象;构造函数运行并打印其对象的
属性值。8.

这两行正在创建
myu类的对象,并在堆中分配内存。但是您以后不能引用这些对象,因为您没有将引用存储在任何位置。

new my_class()
不仅调用
my_class
的默认构造函数,还返回对新创建对象的引用

当然,您可以随意放弃该引用


这就是这里正在发生的事情。在不保留引用的情况下,创建的对象很可能会立即被垃圾回收。

此代码实际上创建了两个my_class的对象,但这些对象没有与任何引用绑定,因此GC将很快删除它们。这类似于作为示例的call

class my_class {

    int a = 8;

    my_class() {
        System.out.println(a);
    }
}

public class NewClass {

    public static void main(String[] argue) {

        new my_class();

        new my_class();  

    }
}
它可能被称为

int Check() { }

这就是所谓的“糟糕的代码编写”。。。这使用构造函数的副作用在控制台上显示一些东西@ParkerHalo是真的,也认为这个问题没有错。不允许在VB6和VBA中使用等效项。逻辑本身并不能解决这个问题。您从未在“对象定义”中见过它。您已经在变量赋值或变量初始化中看到了它
newfoo()
是一个Java表达式,返回类型为
Foo
的值。与任何其他Java表达式一样,您可以在需要
Foo
类型的值的地方使用它(例如,分配或初始化
Foo
变量),也可以在允许语句的任何地方使用它。一般来说,语句不会产生值,因此如果您在需要语句的地方使用表达式,则该值将被忽略。如果我是您的教授,我可能也会这样做。世界上有很多糟糕的代码。弄清楚坏代码应该做什么,弄清楚它实际做什么(这可能不同),对于任何软件开发人员来说都是重要的工作技能。当然,认识到它是不好的,知道为什么它是不好的,知道如何让它变得更好也是很重要的。如果我是你的教授,我不会把这些部分漏掉的。
object.Check();