为什么我们可以在java中用括号赋值?

为什么我们可以在java中用括号赋值?,java,Java,我正在查看tomcat的java源代码,发现了如下代码 String a = ("aa"); int b = (1); 它成功编译,而通常情况下,分配应该是 String a = "a"; int b = 1; 为什么第一段代码编译成功?从语法上讲,这些不是赋值:它们是带有初始值设定项的变量声明。(然而,就()而言,这并不是一个重要的区别) 带有初始值设定项的变量声明的(简化)形式为: Type name = expression; 任何兼容类型的表达式都可以出现在equals的右侧 ()

我正在查看tomcat的java源代码,发现了如下代码

String a = ("aa");
int b = (1);
它成功编译,而通常情况下,分配应该是

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

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

从语法上讲,这些不是赋值:它们是带有初始值设定项的变量声明。(然而,就
()
而言,这并不是一个重要的区别)

带有初始值设定项的变量声明的(简化)形式为:

Type name = expression;
任何兼容类型的表达式都可以出现在equals的右侧

()
生成一个带括号的表达式。发件人:

带括号的表达式是主表达式,其类型为包含表达式的类型,其运行时的值为包含表达式的值

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


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

您有问题吗?我建议您在Tomcat源代码中添加指向几个示例的链接。