首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'Car myCar = new Car();‘和'Car myCar;’之间有什么区别?

'Car myCar = new Car();‘和'Car myCar;’之间有什么区别?
EN

Stack Overflow用户
提问于 2016-03-08 14:55:44
回答 3查看 1.5K关注 0票数 2

在书中找到了初始化对象的第二种方法。现在很困惑。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-08 15:00:01

这声明了一个变量:

代码语言:javascript
复制
Car myCar;

该变量的类型为Car,称为myCar。然而,它还没有初始化为任何东西。它是Car对象的占位符,但是没有这样的对象放置在那里。所以它的值是null

这将声明并初始化一个实例:

代码语言:javascript
复制
Car myCar = new Car();

您可以从逻辑上将其看作是以下两个语句的一个部分:

代码语言:javascript
复制
Car myCar;
myCar = new Car();

声明并创建变量,将其设置为占位符,并在其中放置Car实例。

编辑:更具体地说(我刚才在这里学到了一些东西),如果它是类级成员,则值是null。例如:

代码语言:javascript
复制
class MyClass {
    Car myCar;

    void someMethod() {
        // myCar is "null" here
    }
}

但是,如果它是方法中的局部变量,则略有不同:

代码语言:javascript
复制
class MyClass {
    void someMethod() {
        Car myCar;
        // myCar is "uninitialized" here.
    }
}

区别主要是语义上的,你不应该担心它,除非你有错误或者正在做一些奇怪的事情。编译器会告诉您是否要使用“未初始化”变量,因为在初始化之前不能使用它。但是可以使用null变量,它的值只是null

票数 7
EN

Stack Overflow用户

发布于 2016-03-08 14:59:27

第一个语句定义一个变量,并通过构造一个新的Car实例为其赋值。第二个简单定义一个变量,而不分配一个值;

票数 1
EN

Stack Overflow用户

发布于 2016-03-08 14:59:28

Car myCar; --它不初始化对象,只需声明它。

在语句Car myCar中,如果myCarinstance变量,则myCar的值为null。它没有指向内存中的任何对象。您可以在第一次使用变量之前声明该变量并将其初始化,否则它将抛出一个NullPointerException

在语句Car myCar = new Car();中,内存中有一个名为myCar (类Car )的对象。

声明:声明声明了变量的类型以及它的名称。变量只能声明一次。编译器使用它来帮助程序员避免错误,例如将字符串值赋值给整数变量。在读取或赋值变量之前,必须声明该变量。

See this

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35870663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档