class中申明的成员变量可以自动初始化为初值。method中申明的为局部变量,要自己初始赋值,否则compile fail

解决方案 »

  1.   

    public class e1 
    {
    int i;
    public static void main(String[] args) 
    {
    System.out.println("i="+i);
    }
    }//这个i是不是该给个初值呢???????
      

  2.   

    我觉得也该给个初值但提示是这个
    C:\>javac 2.java
    2.java:1: class e1 is public, should be declared in a file named e1.java
    public class e1
           ^
    2.java:6: non-static variable i cannot be referenced from a static context
                    System.out.println("i="+i);
                                            ^
    2 errors
      

  3.   

    当然有几个是例外,比如int型,系统会自己给它赋0,你这里的错误是在static类中调用了non-static变量。并不是i没有初始化错误。
      

  4.   

    另外一个错误是你的文件名必须用e1.java来命名,应为e1是public的类,一个java文件里面只允许有一个public的类。
      

  5.   

    我在一本书上看到:“在低版本的JDK中,可以不进行初始化,但在高版本的JDK中,变量不赋初值在编译时就可能出错。”
      

  6.   

    开始你可以不给它一个东西但你在用它之前总该给人点东东吧
    要不你说它的存在有啥意义呢;String str = null;
    System.out.println(str);
    //你认为它有意义吗String str = null;
    str=(String)char2;
    System.out.println(str);//现在或多或少有点意义了吧
      

  7.   

    public class e1 
    {
    static int i;
    public static void main(String[] args) 
    {
    System.out.println("i="+i);
    }
    }这样就可以了
      

  8.   

    变量如果不赋初值则由系统给赋0或者相当于0的null。
    上面出现的两个错第一个错误是你的java文件名称没有命名成为e1.java.
    第二个错误是由于你的变量i是类e1的一个成员变量,你没有构建类e1的一个实例就去使用它的成员,所以会出错。
    改法:1在i前加上static关键字
          2static函数这样改
          public static void main(String[] args) 
    {
                      e1 e=new e1()
    System.out.println("i="+e.i);
    }