为了账号安全,请及时绑定邮箱和手机立即绑定

“构造函数语句”和“声明语句”是描述这些语句的正确名称吗?

“构造函数语句”和“声明语句”是描述这些语句的正确名称吗?

catspeake 2023-06-21 15:00:22
我对以下 Java 语句感到困惑:ArtClass artClass0 = new ArtClass();int int3 = 73;boolean boolean0 = artClass0.foo(int3);第一个语句称为 吗constructor statement?对于第二个和第三个陈述,它们都被视为declaration statements?如果是这样,我该如何区分它们?当我在论文中撰写这两个陈述时,我需要区分这两个陈述。
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

它们都是局部变量声明语句,可以简单地写为

VariableDeclaratorId [= VariableInitializer]

我将向您提供JLS中用于命名非终结符的确切术语。下面提到的任何非终结符都可以在规范中找到。

ArtClass artClass0 = new ArtClass();

[UnannReferenceType [UnannClassOrInterfaceType]] Identifier
     = [Primary [PrimaryNoNewArray [ClassInstanceCreationExpression]]];

 int int3 = 73;

[UnannPrimitiveType [NumericType [IntegralType [int]]]] Identifier
    = [Literal [IntegerLiteral [DecimalIntegerLiteral]]];

boolean boolean0 = artClass0.foo(int3);

[UnannPrimitiveType [boolean]] Identifier
    = [Primary [PrimaryNoNewArray [MethodInvocation]]];


查看完整回答
反对 回复 2023-06-21
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

第一个语句称为构造函数语句吗?

不,Java 中没有“构造函数语句”这样的术语,至少官方没有。只有 3 种类型的语句:

  1. 表达声明

  2. 声明书

  3. 控制流语句

表达声明可能包括以下表达方式;

  • 赋值表达式[例如a = 5]

  • 任何 ++ 或 -- [例如 a++]的使用

  • 方法调用[例如 foo(a)]

  • 对象创建表达式[例如 MyClass myClass = new MyClass()]

当我们声明一个变量时,这称为声明语句。

在您的问题示例中,

ArtClass artClass0 = new ArtClass();

上面的是一个对象创建表达式,因此我们称之为表达式语句。另一方面,

int int3 = 73;
boolean boolean0 = artClass0.foo(int3);

在这两种情况下,我们都声明了变量。所以,它们是声明语句。

但是,请注意以下声明:

int int3; // Declaration Statement

int3 = 73; // Expression Statement

boolean boolean0; // Declaration Statement

boolean0 = artClass0.foo(int3); // Expression Statement


查看完整回答
反对 回复 2023-06-21
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

Java 语言的官方术语在Java 语言规范中定义。

所有三个语句都是局部变量声明语句,但它们的变量初始值设定项使用不同的表达式。具体来说:

  • new ArtClass()是类实例创建表达式

  • 73是文字表达

  • artClass0.foo(int3)是一个方法调用表达式

如果您希望根据声明的变量类型进行区分,您可能会说第一个声明了引用类型的变量,而其他声明了基本类型的变量(或更具体地说是“int”或“boolean 变量”)。


查看完整回答
反对 回复 2023-06-21
  • 3 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信