可以说是否有布尔变量状态。假设 status 的值为 false。
我想知道有什么区别
if ( status = true )
{
//block of code
}
if ( status == true )
{
//block of code
}
我试图通过编写一个示例程序来理解它,第一个 if 块中的代码会针对任何值状态(真或假)执行。
对于其他原始类型,如果我在 if 中仅使用一个“=”,系统会引发编译时错误,以及为什么它不会在布尔类型的情况下引发错误。谢谢。
可以说是否有布尔变量状态。假设 status 的值为 false。
我想知道有什么区别
if ( status = true )
{
//block of code
}
if ( status == true )
{
//block of code
}
我试图通过编写一个示例程序来理解它,第一个 if 块中的代码会针对任何值状态(真或假)执行。
对于其他原始类型,如果我在 if 中仅使用一个“=”,系统会引发编译时错误,以及为什么它不会在布尔类型的情况下引发错误。谢谢。
第一个不是比较,而是分配。它编译的原因是它分配了一个布尔值,因此分配的结果也是一个布尔值。
第一条语句分配status一个新值,并if根据该新值执行(true在您的情况下)。第二条语句将 的当前值status与右侧的值进行比较,并对比较结果进行操作。
boolean请注意,在 Java 或boolC# 中与trueor进行比较从来都不是一个好主意false:您可以使用if (status)代替if (status == true)和if (!status)代替if (status == false). 但是,这不适用于C# 中的可为空bool?类型,因此比较trueorfalse通常是一个好主意。
if ( status = true )将永远是真的,因为你首先分配true给status. 另一方面,if ( status == true )只会是真的它status是真的。
编写它并避免拼写错误或混淆的最佳方法是:
if (status) { }
在您分配的第一个代码部分,而不是检查状态的值!为了避免这个错误,你可以这样写:
if (status)
if (!status)
(这仅适用于布尔值)
或者
if ( true == status )
if ( "Peter" == name )
这种 var 和 string/value 位置的交换适用于所有变量类型,一些编码人员使用它来避免使用=and的拼写错误==,
因为如果你不小心写了
if ( status = true )
代替
if ( status == true )
这不起作用,但不会给你一个编译器错误。(它只会将 var 设置为 true)
但是如果你习惯写
if ( true == status )
你打错了,错过了编译器会出错的一个等式标志。
或者你可以使用等于:
if (name.equals("Peter"))
if(status = true) 将状态设置为true,然后它会看到true...这if将永远是true。
if(status == true)实际上是一个检查,这就是你要使用的
在javaif ( status = true )中是赋值,而不是比较。
为了强调两个运算符之间的区别,您可以在短时间内尝试 yoda 条件。
Yoda 条件是当您使用常量值作为第一个操作数时,您的代码将从: 转换if ( status = true )为if ( true = status )。您不能为常量 true 分配任何内容,因此编译器会给您一个语法错误(阻止成功编译)。使用 Yoda 条件将强制编译器给你一个语法错误,而不是一个警告。
我相信 yoda 条件源自非托管代码和较旧的编译器,并且在 .NET 语言中没有提供很多好处,但可能是一种了解差异的有趣方式。
第一个用于分配,status = true,第二个用于比较status == true。
的解释
If (Status = true){
// code execution
}
和
If (Status == true){
// code execution
}
如果您尝试检查 2 个值是否彼此相等,请使用
value1 == value
如果您尝试将值分配给另一个变量,请使用
value1 == value
那么“If (value = value){}”是做什么的呢?
为了解释这一点,您需要知道,Java 检查是否可以定义变量。如果有可能,Java 可以。
所以如果你写一个像
If (Status = true){
System.out.println("Variable Status successfully changed!");
} else {
System.out.println();
}
它将尝试将值“true”分配给变量 Status,如果成功则返回。如果成功,将输入条件并且“变量状态已成功更改!” 将打印到控制台。
理论上
但是由于 Java 需要一个布尔值作为条件,所以它不会起作用。