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]]];
TA贡献1862条经验 获得超6个赞
第一个语句称为构造函数语句吗?
不,Java 中没有“构造函数语句”这样的术语,至少官方没有。只有 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
TA贡献1779条经验 获得超6个赞
Java 语言的官方术语在Java 语言规范中定义。
所有三个语句都是局部变量声明语句,但它们的变量初始值设定项使用不同的表达式。具体来说:
new ArtClass()
是类实例创建表达式73
是文字表达artClass0.foo(int3)
是一个方法调用表达式
如果您希望根据声明的变量类型进行区分,您可能会说第一个声明了引用类型的变量,而其他声明了基本类型的变量(或更具体地说是“int”或“boolean 变量”)。
添加回答
举报