为什么我的if条件不接受java中的整数?

San*_*ari 1 java if-statement

目前我正在使用:

 int a=10;
 if(a=20)
     printf("TRUE");
 else
     printf("false");
Run Code Online (Sandbox Code Playgroud)

以C为单位打印的值TRUE.

但是在java的情况下:

int a=10;
if(a=20)
    System.out.println("TRUE");
else
    System.out.println("FALSE");
Run Code Online (Sandbox Code Playgroud)

我将得到关于不兼容类型的编译时错误.

Ale*_*s G 13

原因是在C中没有特定的类型boolean- 相反,任何非0整数的计算结果为布尔值"true".因此在你的C代码中:

if(a=20)
Run Code Online (Sandbox Code Playgroud)

a 被赋值为20,非0 - 并且条件被评估为 true

在java中,有一个基本类型boolean,条件内部的值if必须是这种类型.

a=20
Run Code Online (Sandbox Code Playgroud)

在Java中分配20 a并返回评估的最终结果integer value 20,但是boolean预期类型- 因此您将获得有关不兼容类型的编译时错误.

a但是,如果要与20 进行比较,则需要==在C和Java中使用运算符:

if(a == 20)
Run Code Online (Sandbox Code Playgroud)

这将在C和Java中编译,并以两种语言打印FALSE.

  • @SandeepTiwari:你应该接受他的回答. (2认同)

小智 7

您需要更换===.

= 是一个赋值运算符

int a=10;
if(a==20){
System.out.println("TRUE");}
else{
System.out.println("FALSE");}
Run Code Online (Sandbox Code Playgroud)

这应该工作正常.

编辑:

在C中,赋值的返回整数值(在本例中为20)是一个正整数,其计算结果为true.在java中,需要一个布尔值.

(请参阅Aleks G提供的更全面的答案)