关于static的用法 JavaSE里应该就这些了吧,我觉得有一个主要的点要搞清楚,关于static相关的方法就一目了然了。
★被static修饰过的成员变量(类变量,也叫静态变量)也好,方法也好,都是优先于实例变量出现(存在)的。
故about static方法有以下几点特性:
1.静态方法(被static修饰的方法)只能访问静态的成员(属性或方法);
--因为这个时候,静态方法和静态成员已经出现和存在了,对象此时还未出现。当然访问不了非静态的成员(实例变量和方法)了。
2.非静态的方法,既能访问非静态成员,也能访问静态成员。
--因为非静态的方法,是通过对象来访问的。也就是对象的方法出现存在的时候,static修饰后的静态成员早就已经存在了,当然可以两者都访问到。
3.静态方法中,不可以有this,super关键字的存在。
--因为this和super是用来特指某对象的,而静态方法出现存在的时候,对象还未出现存在,当然不能用它们来代表对象。
▲4.static只能在类里修饰成员,故而被static修饰的方法内部(大括号内)的只是局部变量而已,不可被static修饰。
eg.
class Person{
String name;
static int age;
static void test1(){
int age=33; //这是静态方法内部的局部变量,前缀不可有static.(参考特性4)
System.out.println(age);
//
}
void test2(){
int age=66;
System.out.println(age);
}
}
public class Study{
public static void main(String[] args){
Person.test1();
//类来访问成员时,因存在先后问题,此时只有类方法可以调用(即test1方法)。输出为33
Person one=new Person();
one.age;
one.test1();
one.test2();
//对象来访问成员,此时即非静态方法,因为对象后出现,故既可以访问成员变量age,也可访问test1方法和test2方法.
参考优先级,输出结果为0 33 66
}
}