为什么要在Java括号中分配值?

时间:2019-05-14 04:21:18

标签: java

我正在查看tomcat的Java源代码,发现了这样的代码

String a = ("aa");
int b = (1);

它编译成功,通常分配应该是

String a = "a";
int b = 1;

为什么第一段代码编译成功?

1 个答案:

答案 0 :(得分:3)

从语法上讲,这些不是赋值:它们是带有初始化程序的变量声明。 (不过,就()而言,区别并不重要)。

带有初始化程序的变量声明的(简化)形式为:

Type name = expression;

任何兼容类型的表达式都可以出现在等号的右侧。

()生成一个带括号的表达式。来自the language spec

  

带括号的表达式是主表达式,其类型是所包含表达式的类型,并且在运行时其值是所包含表达式的值。

因此,它的值与括号中的值相同。

在这种情况下,没有任何理由使用(),但是它们不会改变代码的含义。