黑马程序员技术交流社区

标题: 谁能帮我解释一下下面的结果吗?? 接口 ,静态.. [打印本页]

作者: n_Nie1991    时间: 2016-1-4 19:40
标题: 谁能帮我解释一下下面的结果吗?? 接口 ,静态..
public interface Face{   
       int counter = 40;     
}      
public class Test implements Face{   
      private static int counter;  
      public static void main(String[]args){
                 System.out.println(++counter);         
       }     
}   

为什么打印的结果是1  ,而不是41 ,接口,静态成员,没仔细学,有点看不懂.  
我想问一下静态如果不赋值,是不是也有初始化值

作者: 549208564    时间: 2016-1-4 20:37

public interface Face{   
       int counter = 40;     //创建了一个成员变量
}      
public class Test implements Face{   
      private static int counter;  //在这里也创建了一个counter静态成员变量
      public static void main(String[]args){
                 System.out.println(++counter);          //这里指向的是本类对象(++counter)系统默认前而加了个this关键字,而接口并不能创建对象,一般里面都是抽象方法,定义变量是没有意义的,违反了接口存在的思想
       }     
}   

理解只到这,希望能给你一点帮助
作者: 549208564    时间: 2016-1-4 21:54
更正一下,在接口中,定义的成员变量,都是常量,不可以更改
public interface Face{   
       int counter = 40;     //创建了一个常量,实际是public static final int COUNTER=40;前面的可以不写,系统会自己加上去
}   
作者: 江江会回来的    时间: 2016-1-5 01:30
静态成员变量随着类的加载而加载,test类中的counter初始化为0;++counter为1;  是所有的成员变量初始化不赋值都有初始值,int类型为0;String类型为null;
作者: 窃贼    时间: 2016-1-5 12:27
默认访问离它最近的变量




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2