Java作用域和变量的生存期

Java作用域和变量的生存期,java,scope,lifetime,Java,Scope,Lifetime,我编写了以下程序来显示2到50(包括)之间的所有素数。程序按预期运行,但当我重新检查代码时,我想知道为什么它没有失败。if语句可以更改isprime变量的值。然而,一旦代码块{}的内部被保留,这个更改就不会被忘记吗?这意味着isprime将保持true,并显示所有数字 class Prime { public static void main (String args []) { int a, b; boolean isprime; for (a = 2; a

我编写了以下程序来显示2到50(包括)之间的所有素数。程序按预期运行,但当我重新检查代码时,我想知道为什么它没有失败。
if
语句可以更改
isprime
变量的值。然而,一旦代码块{}的内部
被保留,这个更改就不会被忘记吗?这意味着
isprime
将保持
true
,并显示所有数字

class Prime {
    public static void main (String args []) {

    int a, b;
    boolean isprime;

    for (a = 2; a < 51; a++) {

        isprime = true;

        for (b = a-1; b > 1; b--) {

            if (a % b == 0) isprime = false;
        }

        if (isprime) System.out.println(a);
    }
}
}
类素数{
公共静态void main(字符串参数[]){
INTA,b;
布尔互质;
对于(a=2;a<51;a++){
isprime=true;
对于(b=a-1;b>1;b--){
如果(a%b==0)isprime=false;
}
if(isprime)System.out.println(a);
}
}
}

正如您所看到的,它不是这样工作的:变量的作用域是声明它的块,包括任何子块


修改子块中的变量会修改其所有范围。并非每次新块启动时都创建变量的副本。

正如您所看到的,它不是这样工作的:变量的范围是声明它的块,包括任何子块


修改子块中的变量会修改其所有范围。并非每次新块启动时都创建变量的副本。

正如您所看到的,它不是这样工作的:变量的范围是声明它的块,包括任何子块


修改子块中的变量会修改其所有范围。并非每次新块启动时都创建变量的副本。

正如您所看到的,它不是这样工作的:变量的范围是声明它的块,包括任何子块

修改子块中的变量会修改其所有范围。并非每次新块启动时都创建变量的副本

1.“if”语句可以更改“isprime”变量的值

是。内部的
if
可以更改
isprime

2.然而,一旦内部的“for”代码块{}被留下,这个更改就不会被忘记吗

不,没有忘记

3.这意味着iPrime将保持真实,所有数字都将显示出来

class Prime {
    public static void main (String args []) {

    int a, b;
    boolean isprime;

    for (a = 2; a < 51; a++) {

        isprime = true;

        for (b = a-1; b > 1; b--) {

            if (a % b == 0) isprime = false;
        }

        if (isprime) System.out.println(a);
    }
}
}
只有当你忘记了第二个问题(第2个)时,这种情况才会发生

想想看,一个全局变量可以用任何方法改变,因为它的范围是整个程序。这个变量可以用任何方法改变。类似地,
isprime
可以在
main
中更改,正如在
main
中声明的那样,其范围在
main

1.“if”语句可以更改“isprime”变量的值

是。内部的
if
可以更改
isprime

2.然而,一旦内部的“for”代码块{}被留下,这个更改就不会被忘记吗

不,没有忘记

3.这意味着iPrime将保持真实,所有数字都将显示出来

class Prime {
    public static void main (String args []) {

    int a, b;
    boolean isprime;

    for (a = 2; a < 51; a++) {

        isprime = true;

        for (b = a-1; b > 1; b--) {

            if (a % b == 0) isprime = false;
        }

        if (isprime) System.out.println(a);
    }
}
}
只有当你忘记了第二个问题(第2个)时,这种情况才会发生

想想看,一个全局变量可以用任何方法改变,因为它的范围是整个程序。这个变量可以用任何方法改变。类似地,
isprime
可以在
main
中更改,正如在
main
中声明的那样,其范围在
main

1.“if”语句可以更改“isprime”变量的值

是。内部的
if
可以更改
isprime

2.然而,一旦内部的“for”代码块{}被留下,这个更改就不会被忘记吗

不,没有忘记

3.这意味着iPrime将保持真实,所有数字都将显示出来

class Prime {
    public static void main (String args []) {

    int a, b;
    boolean isprime;

    for (a = 2; a < 51; a++) {

        isprime = true;

        for (b = a-1; b > 1; b--) {

            if (a % b == 0) isprime = false;
        }

        if (isprime) System.out.println(a);
    }
}
}
只有当你忘记了第二个问题(第2个)时,这种情况才会发生

想想看,一个全局变量可以用任何方法改变,因为它的范围是整个程序。这个变量可以用任何方法改变。类似地,
isprime
可以在
main
中更改,正如在
main
中声明的那样,其范围在
main

1.“if”语句可以更改“isprime”变量的值

是。内部的
if
可以更改
isprime

2.然而,一旦内部的“for”代码块{}被留下,这个更改就不会被忘记吗

不,没有忘记

3.这意味着iPrime将保持真实,所有数字都将显示出来

class Prime {
    public static void main (String args []) {

    int a, b;
    boolean isprime;

    for (a = 2; a < 51; a++) {

        isprime = true;

        for (b = a-1; b > 1; b--) {

            if (a % b == 0) isprime = false;
        }

        if (isprime) System.out.println(a);
    }
}
}
只有当你忘记了第二个问题(第2个)时,这种情况才会发生

想想看,一个全局变量可以用任何方法改变,因为它的范围是整个程序。这个变量可以用任何方法改变。类似地,
isprime
可以在
main
中更改,正如在
main
中声明的那样,其范围在
main