Java 在if-else语句中声明变量?

Java 在if-else语句中声明变量?,java,if-statement,for-loop,Java,If Statement,For Loop,我对Java编程还是很陌生,所以我有一个问题。 我可以像for循环一样在if-else语句中声明变量吗 for (int i=0; i<10; i++) int test; if (test=6;test ==9;) { System.out.println("Yes"); } else { System.out.println("No"); } for(inti=0;i这是错误的 if (test=6

我对Java编程还是很陌生,所以我有一个问题。 我可以像for循环一样在if-else语句中声明变量吗

    for (int i=0; i<10; i++)



    int test;
    if (test=6;test ==9;) {
        System.out.println("Yes");
    }
    else {
        System.out.println("No");
    }
for(inti=0;i这是错误的

if (test=6;test ==9;) {
        System.out.println("Yes");
    }
    else {
        System.out.println("No");
    }
if()中不能有分号

这种方法称为初始化(
test=6;
),这是不允许的。如果像
if(test==6)


请记住,
java
如果
只接受
布尔值
,即
true
false
(与javascript中接受大于1的内容不同)不,您不能这样做。
if
语句中圆括号内的内容必须是一个表达式,该表达式传递一个
布尔值。变量声明在Java中永远不是表达式

假设您试图声明
test
,使其范围仅限于if/else语句,那么下面是如何执行的:

public void someMethod() {
    ....
    { // nested block to limit the scope of 'test'
        int test = 6;
        if (test == 9) {
            System.out.println("Yes");
        }
        else {
            System.out.println("No");
        }
    }
}

(这个例子没有多大意义,但我假设它不是故意的。)

java中条件或决策语句中的表达式必须计算为布尔值(true/false)。即使是以下情况也无法编译:

if(null){}
if(0){}

依此类推。

好吧,你为什么不试试看呢?如果编译器抱怨,那么你所做的是不对的。If语句的代码正确吗?test==9;或者应该是test==9?您可以使用位包含或|逻辑AND,这意味着我不能在if-else语句中声明变量?@user3744056您所做的方式被称为初始化
test=6
您不能在ifWait中初始化,在
if
语句中绝对允许初始化。请参阅。它实际上是错误,因为程序员不小心赋值而不是比较。@user3744056您不能在
if
语句中声明变量。但是,您可以赋值给一个。您的语句太宽了。您说的是不允许初始化,这显然是错误的。您需要说初始化一个不是
bo的变量不允许使用olean或类似的东西"在这种情况下不允许初始化。这些额外的单词会限制您的语句的范围,这样就不会再出错。如果您说错了什么,您的语句基于什么并不重要。哇,我不知道您可以在方法中嵌套块。它们有什么缺点,或者它们只是一种范围限制机制吗没有其他影响吗?没有性能上的缺点。我想它们会降低可读性。