猿问

【JAVA小白】问关于变量命名冲突的问题。两个i,一个在for循环里面一个在for循环外面。

第一段代码:

public class HelloWorld {    
    public static void main(String[] args) {        
        int i = 0;      //这里定义了i
        for(int i = 0 ; i < 10 ; i++) {   // 这里也有一个i,系统提示,命名重复,请修改
            System.out.println(i);
        }
        
    }
}

第一段代码有两个i,一个在for外面,一个在for里面,系统提示命名冲突

第二段代码:

public class HelloWorld {    
    public static void main(String[] args) {        
        for(int i = 0; i < 10 ; i++) {
            System.out.println(i);
        }        
        for(int i = 0; i < 10 ; i++) {
            System.out.println(i);
        }
        
    }
}

第二段代码有两个并列的for循环,都有一个变量i,但是两个不会命名冲突。

我有两个问题:
第一,第一段代码和第二段代码当中,两个i到底哪个是局部变量,哪个是全局变量?
第二,为什么第一段代码i名字冲突,第二段代码i名字不冲突?


守着星空守着你
浏览 1217回答 2
2回答

婷婷同学_

这个问题是变量的作用域问题

湖上湖

第一端代码中&nbsp;int i = 0;&nbsp;的作用域是整个&nbsp;main&nbsp;函数中,而&nbsp;for&nbsp;循环在&nbsp;main&nbsp;函数之中所以系统提示命名冲突;第二段代码中的两个i的作用域分别在两个for循环之中,所以不冲突;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;HelloWorld&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;hello=0;&nbsp;//成员变量,作用域整个类 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;j&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//局部变量,作用域main代码块中 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0&nbsp;;&nbsp;i&nbsp;<&nbsp;10&nbsp;;&nbsp;i++)&nbsp;{&nbsp;&nbsp;&nbsp;//&nbsp;局部变量,作用域for代码块中 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}
随时随地看视频慕课网APP

相关分类

Java
我要回答