我对以下Java语句感到困惑:
ArtClass artClass0 = new ArtClass();
int int3 = 73;
boolean boolean0 = artClass0.foo(int3);
第一个语句称为constructor statement
吗?对于第二和第三条语句,它们是否都被视为declaration statements
?如果是这样,我如何区分它们?在撰写论文时,我需要区分这两种说法。
答案 0 :(得分:3)
它们都是Local Variable Declaration Statements,可以简单地写为
<script src="https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-core.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-selectionsaverestore.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-textrange.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id='app'>
<div @beforeinput='storeIndexes' @input='restoreIndexes' contenteditable id='text-with-highlights'>
Just some text to show the problem.
</div>
</div>
我将为您提供the JLS中命名为nonterminals的确切术语。规范中可以找到下面提到的任何非终端。
VariableDeclaratorId [= VariableInitializer]
是
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);
答案 1 :(得分:2)
第一个语句称为构造函数语句吗?
不,Java中没有这样的术语“构造函数声明” ,至少不是正式的。检查Java Tutorial at Oracle Docs,只有三种类型的语句:
表达声明可能包含由;
得出的以下表达式:
当我们声明一个变量时,称为声明语句。
在您的问题示例中,
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
答案 2 :(得分:2)
Java语言的官方术语在Java Language Specification中定义。
所有三个语句均为Local Variable Declaration Statements,但它们的变量初始值设定项使用不同的表达式。具体来说:
new ArtClass()
是class instance creation expression 73
是literal expression artClass0.foo(int3)
是method invocation expression 如果您希望根据要声明的变量的类型进行区分,则可以说第一个声明了reference type的变量,而其他声明了primitive type的变量(或更具体地说, int”或“ boolean variable”)。