【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名字不冲突?

阅读 2.8k
1 个回答

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

第一端代码中 int i = 0; 的作用域是整个 main 函数中,而 for 循环在 main 函数之中所以系统提示命名冲突;

第二段代码中的两个i的作用域分别在两个for循环之中,所以不冲突;

    public class HelloWorld {
    
        int hello=0; //成员变量,作用域整个类
        
        
        
        public static void main(String[] args) {
        
            int j = 0;      //局部变量,作用域main代码块中
            
            for(int i = 0 ; i < 10 ; i++) {   // 局部变量,作用域for代码块中
            
                System.out.println(i);
                
            }
        }
    }
   
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题