1、使用static声明的方法也可以直接由类名称来调用。下面直接看一个例子
<span style="font-size:14px;">class Person {
private String name;
private int age;
private static String city = "A城";
// 定义static方法为city赋值,不能使private不然外部访问不了
public static void setCity(String c){
city = c;//this.city=c是错误的,static里面不能用this
}
public Person(String name, int age){
this.name = name;
this.age = age;
}
public void info(){
System.out.println("姓名:"+this.name+",年龄:"+this.age+",城市:"+city);
}
public static String getCity(){
return city;
}
}</span>
<span style="font-size:14px;">public class StaticDemo02 {
public static void main(String[] args) {
Person p1 = new Person("张三",33);
Person p2 = new Person("李四",22);
System.out.println("--------修改前--------");
p1.info();
p2.info();
System.out.println("--------修改前--------");
// 通过类名称调用static方法
Person.setCity("B城");
p1.info();
p2.info();
}
}
</span>
输出结果:
--------修改前--------
姓名:张三,年龄:33,城市:A城
姓名:李四,年龄:22,城市:A城
--------修改前--------
姓名:张三,年龄:33,城市:B城
姓名:李四,年龄:22,城市:B城
需要注意的一点是,非static声明的方法可以调用static声明的属性或方法,但是static声明的方法不能调用非static声明的属性或方法
因为在程序中所有的属性或方法必须在对象开辟堆内存之后才可以调用,而static的方法在对象未被实例化时就可以被类名调用,这样的话直接由static方法调用非static操作,则有可能在属性还没有被初始化时就被调用了。