Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:方法中变量的生命周期_Java_Class - Fatal编程技术网

Java:方法中变量的生命周期

Java:方法中变量的生命周期,java,class,Java,Class,首先,如果这个问题已经在其他地方讨论过,我表示歉意。我完全是个初学者,有些话题对我来说太复杂了 我在方法的开头声明了变量'x=0,然后使用for()方法,其中'x'被构建为45 当“for(){}”的块在关闭曲括号时结束时,为什么'x'仍然返回45?我认为块中x的生命周期将在for{}完成时结束 有人能澄清一下吗 非常感谢, public class Demo4 { public static void main(String args[]) { int i;

首先,如果这个问题已经在其他地方讨论过,我表示歉意。我完全是个初学者,有些话题对我来说太复杂了

我在方法的开头声明了变量
'x=0
,然后使用
for()
方法,其中
'x'
被构建为45

“for(){}”
的块在关闭曲括号时结束时,为什么
'x'
仍然返回
45
?我认为块中
x
的生命周期将在for{}完成时结束

有人能澄清一下吗

非常感谢,

public class Demo4 {
    public static void main(String args[]) {
        int i;
        int x = 0;

        for (i = 0; i < 10; i++) {
            x += i;
        }
        System.out.println(x);
    }
}   
公共类演示4{
公共静态void main(字符串参数[]){
int i;
int x=0;
对于(i=0;i<10;i++){
x+=i;
}
系统输出println(x);
}
}   

从声明局部变量的点到最里面的封闭块的末尾都存在局部变量。使用变量的构造并不重要。在您的情况下,
x
一直存在,直到
main()
结束

但是,对于
for
循环有一个特殊规则:如果您将变量声明为
for
头的一部分,您将实现您想要的,因为
x
仅在循环执行期间存在:

for (int i = 0, x = 0; i < 10; i++) {
    x += i;
}

局部变量存在于从声明它的点到最里面的封闭块的末尾。使用变量的构造并不重要。在您的情况下,
x
一直存在,直到
main()
结束

但是,对于
for
循环有一个特殊规则:如果您将变量声明为
for
头的一部分,您将实现您想要的,因为
x
仅在循环执行期间存在:

for (int i = 0, x = 0; i < 10; i++) {
    x += i;
}

java中变量的生命周期停留在声明变量的块中。可以将块内的块视为子块,父块中声明的变量将继承到子块。但是,如果在内部(子)块中声明变量,则不能在外部(父)块中使用该变量

如下代码所示:

public static void main(String args[]) {

    for (i = 0; i < 10; i++) {
        int x = 0;
        x += i;
    }
    System.out.println(x);
}
publicstaticvoidmain(字符串参数[]){
对于(i=0;i<10;i++){
int x=0;
x+=i;
}
系统输出println(x);
}
如果您使用上述代码,它将给出错误。因为x是在for循环块中声明的,并且它的作用域仅在该块内,而不是在该块外


但是您发布的代码在外部块中有x,而for循环在该块中。所以,当你在循环中使用它时,它是有效的

java中变量的生命周期停留在声明变量的块中。可以将块内的块视为子块,父块中声明的变量将继承到子块。但是,如果在内部(子)块中声明变量,则不能在外部(父)块中使用该变量

如下代码所示:

public static void main(String args[]) {

    for (i = 0; i < 10; i++) {
        int x = 0;
        x += i;
    }
    System.out.println(x);
}
publicstaticvoidmain(字符串参数[]){
对于(i=0;i<10;i++){
int x=0;
x+=i;
}
系统输出println(x);
}
如果您使用上述代码,它将给出错误。因为x是在for循环块中声明的,并且它的作用域仅在该块内,而不是在该块外


但是您发布的代码在外部块中有x,而for循环在该块中。所以,当你在循环中使用它时,它是有效的

你是说为什么
x
不是0?您在其范围内更改了它的值。你是怎么从10得到45的?从0到9的整数之和是45。你是说为什么
x
不是0?您在其范围内更改了它的值。你是怎么从10中得到45的?从0到9的整数之和是45。