final修饰的常量不能修改:
当调用f1(final修饰的)方法的时候,将i重新赋值这样会报错(例i=i+1),当调用f2(非final修饰),将i重新定值就不会把报错,
结论:final修饰的是常量。
static修饰和final的修饰
public: 使接口的实现类可以使用这个常量
static:static修饰就表示它属于类的,随的类的加载而存在的,如果是非static的话,
就表示属于对象的,只有建立对象时才有它,而接口是不能建立对象的,所以
接口的常量必须定义为static
final:final修饰就是保证接口定义的常量不能被实现类去修改,如果没有final的话,
由子类随意去修改的话,接口建立这个常量就没有意义了。
static修饰的方法是静态方法:
静态方法不可以调非静态全局变量,从内存的角度看,就是当类被加载的时候静态方法和静态属性(全局静态变量)被加载到内存中,就是在内存中开辟一段内存地址用来保存静态方法和静态属性,这时候没有被实例化的类在内存中是不存在的,所以静态方法是不能访问非静态的全局变量,在类被实例化的时候,就是new 某个类的时候,在内存中给这个类开辟一些内存空间保存这个类的对象,这个时候就可以用静态方法去访问非静态的全部变量