A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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 ,接口,静态成员,没仔细学,有点看不懂.  
我想问一下静态如果不赋值,是不是也有初始化值

4 个回复

倒序浏览

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关键字,而接口并不能创建对象,一般里面都是抽象方法,定义变量是没有意义的,违反了接口存在的思想
       }     
}   

理解只到这,希望能给你一点帮助
回复 使用道具 举报
更正一下,在接口中,定义的成员变量,都是常量,不可以更改
public interface Face{   
       int counter = 40;     //创建了一个常量,实际是public static final int COUNTER=40;前面的可以不写,系统会自己加上去
}   
回复 使用道具 举报
静态成员变量随着类的加载而加载,test类中的counter初始化为0;++counter为1;  是所有的成员变量初始化不赋值都有初始值,int类型为0;String类型为null;
回复 使用道具 举报
默认访问离它最近的变量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马