【JAVA小白】 问关于变量一开始没有赋值结果错误的疑问

代码如下:

package com.helloworld;


public class HelloWorld {
    
    public static void main(String[] args) {
        
        int index;                //定义了一个变量index
        
        for (int i = 0 ; i < 10 ; i++) {
            
            if (i == 5 ) {
                index = i;     //当i等于5的时候,赋值给index
            }
        System.out.println("index是" + index);    
            //系统显示这里错误,但是我有点不明白,
            //不是明明已经给index复制了么,为什么错误
        }
        
    }
    
}

只有把一开始的变量声明,int index 改成index index = 0 错误才消失。
但是这个我有点不明白,我明明在里面赋值了,为什么是错的?

阅读 1.9k
2 个回答

使用时"有可能"未被赋值就是编译错误. 编译器的控制流分析不够就是这样了

(1)在java中,类的成员变量不用初始化即可直接使用,JVM会自动初始化,原始变量如int char short long byte初始化为0,float double初始化为0.0,boolean初始化为false,对象初始化为null。

(2)在方法内的变量是局部变量,JVM不会给其分配默认值,局部变量必须要我们为其赋初始值,否则将得到编译错误的提示。

class A{
    int i;  //成员变量,JVM自动初始化为0
    public static void main(String[] args) {
        int j = 0; //局部变量。 必须自己赋初始值,否则会报错。
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题